JLabel au-dessus d'un autre JLabel
Question
Est-il possible d'ajouter un JLabel au-dessus d'un autre JLabel? Merci.
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 JLabel
s.
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 .