Ist es möglich, ein JLabel über einem anderen JLabel hinzuzufügen? Vielen Dank.JLabel über einem anderen JLabel
Antwort
Die kurze Antwort ist ja, wie ein JLabel
ein Container
ist, so kann es eine Component
(a JLabel
ist eine Unterklasse von Component
) akzeptiert in die JLabel
unter Verwendung der add
Methode hinzufügen:
JLabel outsideLabel = new JLabel("Hello");
JLabel insideLabel = new JLabel("World");
outsideLabel.add(insideLabel);
Im obigen Code wird insideLabel
zu outsideLabel
hinzugefügt.
Es erscheint jedoch visuell ein Etikett mit dem Text "Hallo", so dass man das Etikett, das in dem Etikett enthalten ist, nicht wirklich sehen kann.
Es stellt sich also die Frage, was man wirklich erreichen möchte, indem man ein Etikett auf ein anderes Etikett setzt.
Edit:
Aus den Kommentaren:
gut, was ich wollte zuerst tun war, einen gewissen Anteil aus einer Datei zu lesen, anzuzeigen dann diese Fraktion in a jlabel. Was ich dachte, war teilen Sie die Fraktion in 3 Teile, dann verwenden Sie ein Etikett für jeden der drei. dann zweite, ich möchte in der Lage sein, den Bruch zu ziehen, so dachte ich, ich könnte ein anderes jlabel verwenden, und legen Sie die 3'mini jlabels über den großen jlabel. Ich weiß nicht , ob das funktionieren wird ..: |
Es hört sich an, als ob man sich überlegen sollte, wie man Layout-Manager in Java benutzt.
Ein guter Startpunkt wäre Using Layout Managers und A Visual Guide to Layout Managers, beide von The Java Tutorials.
Es klingt wie ein GridLayout
könnte eine Option sein, um die Aufgabe zu erfüllen.
JPanel p = new JPanel(new GridLayout(0, 1));
p.add(new JLabel("One"));
p.add(new JLabel("Two"));
p.add(new JLabel("Three"));
Im obigen Beispiel wird die JPanel
wird ein GridLayout
als Layout-Manager zu verwenden, und erzählt wird, eine Reihe von JLabel
s zu machen.
oh. Cool, danke! Ich bin nicht wirklich mit diesen vertraut, also fragte ich hier. :) – annaoj
Nun, was ich wollte, war zuerst, lesen Sie einen bestimmten Bruchteil von einer Datei, dann zeigen Sie diesen Bruchteil in einem jlabel an. Was ich dachte, war, die Fraktion in 3 Teile zu teilen, dann ein Etikett für jeden der drei zu verwenden. dann möchte ich zweitens den bruch ziehen können, also dachte ich, ich könnte ein anderes jabel benutzen und die 3'mini jlabels über das große jabel legen. Ich weiß nicht, ob das funktionieren wird ..: | – annaoj
klingt wie das wird funktionieren..danke, covebird! :) – annaoj
ist es eine Frage des Layouts. können Sie das mit Null-Layout (mit fest codierten Standorten) oder mit einem benutzerdefinierten Layout tun.
Ich habe versucht, dies zu tun, aber es funktioniert nicht für mich. : c Vielleicht mache ich etwas falsch. Ich werde es wieder versuchen. Danke Omry! – annaoj
Sie können die Funktion list() verwenden, um einen schönen Dump der aktuellen Containerhierarchie zu erhalten, der Ihnen bei der Fehlersuche helfen soll. –
großartig! Vielen Dank! Sollte ich wieder Probleme bekommen, kann ich es hier nochmal posten? – annaoj
Die Antwort auf Ihre ursprüngliche Frage ist ja aus den Gründen, dass eine Komponente zu einem Container hinzugefügt werden kann.
Der Grund, warum Sie das zweite Etikett nicht sehen, ist, weil ein JLabel standardmäßig einen Null-Layout-Manager verwendet und die Größe des zweiten Etiketts (0, 0) ist. Alles, was Sie tun müssen, ist, die Grenzen des zweiten Etiketts festzulegen und los geht's.
Sie können einen Layout-Manager nicht verwenden, wenn Sie Komponenten umherziehen möchten, da der Layout-Manager aufgerufen wird und die Komponenten basierend auf dem Layout-Manager der Komponente neu positioniert werden, sobald Sie den Rahmen ändern.
oh. Aber ist es möglich, ein Etikett übereinander zu legen und beide Etiketten als eines zu ziehen? : | – annaoj
Wenn der Maus-Listener zum übergeordneten Label hinzugefügt wird, werden auch alle untergeordneten Elemente beim Verschieben gezogen. – camickr
oh..aber ein Freund sagte, dass es nicht möglich ist .. sagte, ich sollte ein Panel verwenden. Wah. jetzt bin ich verloren. : | – annaoj
können Sie einen JLayeredPane
verwenden und den Rahmen auf No Border setzen.
Es tut mir leid, das ist ein einfacher Weg, wenn Sie einen Designer verwenden! Wie der in Netbeans. –
können Sie sie mit Hilfe der horizontalen oder vertikalen Spalt (HGAP, VGAP) die Attribute des Layouts über jeweils anderen setzen hinzufügen
JPanel p = new JPanel(new GridLayout(2, 1,-40,0)); //the 40 is the hgap , make it the same with the label height .
- 1. eine JLabel vor einem anderen
- 2. Unterstrichen JLabel
- 3. JLabel Farbwechsel
- 4. Wie JLabel über einzustellen (in) JLabel in Netbeans nur Designer mit
- 5. Java setText JLabel aus einer anderen Klasse
- 6. Benutzereingabe für JLabel
- 7. Setzen Sie ein JLabel über zwei JButtons
- 8. JLabel auf Änderungstext Ereignis
- 9. JLabel get Image
- 10. java jlabel array
- 11. Java animieren JLabel
- 12. BMP in JLabel anzeigen
- 13. Null-Zeiger-Ausnahme JLabel
- 14. Verwalten mehrerer JLabel-Veranstaltungen
- 15. Wie kann ich ein JLabel immer über einem JButton halten?
- 16. Zeige serialEvent in JLabel
- 17. jlabel on fly erstellen
- 18. JLabel - Elternteil Panel bekommen?
- 19. JLabel setText funktioniert nicht
- 20. Die JLabel nicht
- 21. Wie JLabel importData überschreiben
- 22. Zurücksetzen von JLabel
- 23. Overlapped JLabel in Frame
- 24. Anzeige der JLabel-Matrix
- 25. JLabel setLineWrap - scheidenden Text
- 26. Zwei Zeilen Text in einem JLabel
- 27. Auswählen von Text von einem JLabel?
- 28. Jlabel, das korrekt zu einem Symbol führt
- 29. Wie bekomme ich das alphanumerische Token eines JLabel in einem JLabel [], um es an die Methode
- 30. Mehrzeiliges JLabel packt nicht richtig
sorry ... warum würde die Sinne machen ?? – Juri
deshalb frage ich .. – annaoj