Question

Est-il possible d'ajouter un JLabel au-dessus d'un autre JLabel? Merci.

Était-ce utile?

La solution

La réponse courte est oui, comme JLabel est un Component (un JLabel est une sous-classe de Component) pour ajouter dans la JLabel en utilisant le add méthode :

JLabel outsideLabel = new JLabel("Hello");
JLabel insideLabel = new JLabel("World");
outsideLabel.add(insideLabel);

Dans le code ci-dessus, le insideLabel est ajouté à la outsideLabel.

Cependant, visuellement, une étiquette avec le texte « Bonjour » apparaît, donc on ne peut pas vraiment voir l'étiquette qui est contenu dans l'étiquette.

Alors, la question se résume ce que l'on veut vraiment accomplir en ajoutant une étiquette sur le dessus d'une autre étiquette.


Modifier

D'après les commentaires:

  

bien, ce que je voulais faire était d'abord,   lire une certaine fraction d'un fichier,   puis afficher cette fraction dans un   JLabel. ce que je pensais était de   diviser la fraction en 3 parties, puis   utiliser une étiquette pour chacun des trois.   puis la deuxième, je veux être en mesure de faire glisser   la fraction, donc je pensais que je pouvais utiliser   un autre JLabel, et placez-le 3'mini   JLabels' sur la grande JLabel. Je ne   savoir si cela fonctionnera bien ..: |

On dirait que l'on devrait se pencher sur la façon d'utiliser les gestionnaires de mise en page en Java.

Un bon endroit pour commencer serait Utiliser le gestionnaire de mise en page et un guide visuel de gestionnaires de disposition , à la fois de Java Tutoriels .

Il ressemble à un GridLayout pourrait être une option pour accomplir la tâche.

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

Dans l'exemple ci-dessus, le JPanel est fait d'utiliser un GridLayout en tant que gestionnaire de mise en page, et est dit de faire une ligne de JLabels.

Autres conseils

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 que par défaut un JLabel utilise un gestionnaire de mise en page nulle et la taille de la deuxième étiquette est (0, 0) donc il n'y a rien à peindre. Donc, tout ce que vous devez faire est de définir les limites de la deuxième étiquette et le tour est joué.

Vous ne pouvez pas utiliser un gestionnaire de mise en page si vous voulez faire glisser des composants autour parce que dès que vous redimensionnez le cadre etc, le gestionnaire de mise en page sera appelée et les composants seront déplacés en fonction du gestionnaire de mise en page du composant.

il est une question de mise en page. vous pouvez le faire en utilisant la mise en page null (avec des emplacements codés en dur) ou avec une mise en page personnalisée.

vous pouvez utiliser un JLayeredPane et le mettre à la frontière est No Border.

vous pouvez ajouter les mettre au-dessus les uns des autres en utilisant l'écart horizontal ou vertical (hgap, vgap) les attributs de la mise en page
JPanel p = new JPanel(new GridLayout(2, 1,-40,0)); //the 40 is the hgap , make it the same with the label height .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top