7
votes

Jlabel sur le dessus d'un autre jlabel

est-il possible d'ajouter un jlabel sur un autre jlabel? Merci.


1 commentaires

désolé ... pourquoi cela ferait-il des sens ??


5 Réponses :


8
votes

La réponse courte est oui, comme un Jlabel code> est un conteneur code> , il peut donc accepter un composant code> (A jlabel code> est une sous-classe de composant code>) à Ajouter dans le jlabel code> en utilisant ajout code> méthode: xxx pré>

dans le code ci-dessus, le INSIDELABEL code> est ajouté au Outsidelabel code>. p>

Cependant, visuellement, une étiquette avec le texte "Hello" apparaît, donc on ne peut pas vraiment voir l'étiquette contenue dans l'étiquette. p>

Donc, la question descend ce que l'on veut vraiment accomplir en ajoutant Une étiquette sur une autre étiquette. P>


EDIT: stry> p>

à partir des commentaires: P>

Eh bien, ce que je voulais faire était d'abord, Lire une certaine fraction d'un fichier, puis affichez cette fraction dans un jlabel. Ce que j'ai pensé était de Divisez la fraction en 3 parties, puis Utilisez une étiquette pour chacun des trois. Puis deuxièmement, je veux pouvoir traîner la fraction, alors je pensais pouvoir utiliser un autre jlabel, et placer les 3'mini Jlabels 'sur le grand jlabel. Je ne savoir si cela fonctionnera cependant ..: | p> blockQuote>

On dirait que l'on dirait qu'il faut examiner comment utiliser les gestionnaires de mise en page en Java. p>

Un bon endroit pour démarrer serait Utilisation des gestionnaires de layout et Guide visuel des gestionnaires de mise en page , tous deux de Les tutoriels Java . P>

Cela ressemble à un gridlayout code> pourrait être une option pour accomplir la tâche. P>

JPanel p = new JPanel(new GridLayout(0, 1));
p.add(new JLabel("One"));
p.add(new JLabel("Two"));
p.add(new JLabel("Three"));


2 commentaires

Oh. cool merci! Je ne suis pas vraiment familier avec ceux-ci donc j'ai demandé ici. :)


Eh bien, ce que je voulais faire était d'abord, lisez une certaine fraction d'un fichier, puis affichez cette fraction dans un jlabel. Ce que j'ai pensé était de diviser la fraction en 3 parties, utilisez une étiquette pour chacun des trois. Ensuite, je veux pouvoir faire glisser la fraction, alors je pensais pouvoir utiliser un autre jlabel et placer les 3'mini Jlabels 'sur le grand jlabel. Je ne sais pas si cela fonctionnera cependant ..: |



0
votes

C'est une question de mise en page. Vous pouvez le faire en utilisant la mise en page NULL (avec des emplacements codés dur) ou avec une mise en page personnalisée.


4 commentaires

J'ai essayé de faire ça, mais ça ne marche pas pour moi. : c Peut-être que je vais faire quelque chose de mal. Je vais essayer de nouveau. merci omry!


Vous pouvez utiliser la fonction liste () pour obtenir une belle vidage de la hiérarchie actuelle du conteneur, devrait vous aider à déboguer votre problème.


super! Merci! Devrais-je rencontrer des problèmes à nouveau, puis-je le poster ici à nouveau?


Si c'est à peu près la même question, c'est sûr. Si votre question actuelle est résolue, acceptez l'une des réponses et si vous avez une autre question, créez simplement une nouvelle.



1
votes

La réponse à votre question initiale est oui pour les raisons étant donné que tout composant peut être ajouté à un conteneur.

La raison pour laquelle vous ne voyez pas la deuxième étiquette est parce que par défaut, un jlabel utilise un gestionnaire de mise en page NULL et la taille de la deuxième étiquette est (0, 0), il n'y a donc rien à peindre. Donc, tout ce que vous avez à faire est de définir les limites de la deuxième étiquette et de partir.

Vous ne pouvez pas utiliser de gestionnaire de mise en page si vous souhaitez faire glisser des composants car dès que vous redimensionnez le cadre, etc., le gestionnaire de mise en page sera appelé et les composants seront repositionnés en fonction du gestionnaire de mise en page du composant. < / p>


4 commentaires

Oh. Mais est-il possible d'avoir une étiquette sur une autre et être capable de faire glisser les deux étiquettes comme une? : |


Si l'auditeur de souris est ajouté à l'étiquette mère, tous les enfants seront également déplacés lorsqu'il est déplacé.


Oh..mais un ami dit que ce n'est pas possible .. dit que je devrais utiliser un panneau. wah. Maintenant im perdu. : |


C'est possible et je vous ai déjà dit comment le faire. Ses 4 lignes de code, 2 pour créer les étiquettes pour définir les limites de l'étiquette de l'enfant et le 4ème pour ajouter l'étiquette enfant à l'étiquette des parents. Cela devrait prendre environ 5 minutes pour le tester. Essayez-le et postez votre SSCCE si cela ne fonctionne pas. Si vous ne savez pas ce qu'est un SSCCE, recherchez le Web.



0
votes

Vous pouvez utiliser un jlayeredpane et définir la bordure en aucune bordure.


1 commentaires

Je suis désolé, c'est un moyen facile si vous utilisez un designer! Comme celui de Netbeans.



0
votes

Vous pouvez ajouter les autres à l'aide de l'écart horizontal ou vertical (HGAP, VGAP) les attributs de la mise en page
JPANEL P = NOUVEAU JPANEL (NOUVEAU GRIDLAYOUT (2, 1, -40,0)); // Le 40 est le Hgap, le rend la même chose avec la hauteur de l'étiquette.


0 commentaires