Wie würde man die Z-Reihenfolge (Schichttiefe) aller JInternalFrames in einem JDesktopPane erhalten? Es scheint keinen geradlinigen Weg dafür zu geben. Irgendwelche Ideen?Wie man die z-Reihenfolge von JInternalFrames in einem JDesktopPane bekommt
Antwort
Obwohl ich dies nicht versucht habe, enthält die Container
Klasse (die ein Vorfahre der JDesktopPane
Klasse ist) eine getComponentZOrder
Methode. Durch Übergeben einer Component
, die in der Container
ist, wird es die z-Reihenfolge von als int
zurückgeben. Die Component
mit dem niedrigsten von der Methode zurückgegebenen Z-Ordnungswert wird zuletzt gezeichnet, dh wird oben gezeichnet.
Kopplung mit der JDesktopPane.getAllFrames
Methode, die ein Array von JInternalFrames
zurückgibt, würde ich denken, dass man die Z-Reihenfolge der internen Frames erhalten könnte.
bearbeiten
Ich habe versucht, es tatsächlich und es scheint zu funktionieren:
final JFrame f = new JFrame();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
final JDesktopPane desktopPane = new JDesktopPane();
desktopPane.add(new JInternalFrame("1") {
{
setVisible(true);
setSize(100, 100);
}
});
desktopPane.add(new JInternalFrame("2") {
{
setVisible(true);
setSize(100, 100);
}
});
desktopPane.add(new JInternalFrame("3") {
JButton b = new JButton("Get z-order");
{
setVisible(true);
setSize(100, 100);
getContentPane().add(b);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e)
{
JInternalFrame[] iframes = desktopPane.getAllFrames();
for (JInternalFrame iframe : iframes)
{
System.out.println(iframe + "\t" +
desktopPane.getComponentZOrder(iframe));
}
}
});
}
});
f.setContentPane(desktopPane);
f.setLocation(100, 100);
f.setSize(400, 400);
f.validate();
f.setVisible(true);
Im obigen Beispiel wird ein JDesktopPane
mit der dritte ein mit drei JInternalFrame
s bevölkert mit Knopf, der eine Liste von JInternalFrame
s und seine Z-Reihenfolge zu System.out
ausgibt.
Ein Beispiel Ausgabe ist die folgende:
JDesktopPaneTest$3[... tons of info on the frame ...] 0
JDesktopPaneTest$2[... tons of info on the frame ...] 1
JDesktopPaneTest$1[... tons of info on the frame ...] 2
Das Beispiel viele anonyme innere Klassen verwendet nur den Code kurz zu halten, sondern eine tatsächliche Programm sollte wahrscheinlich nicht tun.
- 1. JDesktopPane und JInternalFrame helfen!
- 2. Wie man JDesktopPane im Hintergrund in JFrame
- 3. Wie bekommt man die Ansicht?
- 4. Wie bekommt man die Schließung in lua?
- 5. Scrollbare JDesktopPane?
- 6. Wie bekommt man die Wochennummer in Python?
- 7. Frage zu JInternalFrames
- 8. Wie setze ich JDesktopPane Größe
- 9. Beim Erstellen einer MDI sollte ich JDesktopPane oder JFrame verwenden
- 10. Picasso - wie bekommt man die richtige Bildgröße?
- 11. jquery. Wie bekommt man die Geschwisterhöhe?
- 12. Wie bekommt man wod_qty_req?
- 13. Wie bekommt man seine Vertriebsgruppe von Lync
- 14. scrapy - wie man Text von 'div' bekommt
- 15. Wie bekommt man Sitzungen von Google fit?
- 16. Wie bekommt man die Proportionen von Ebenen einer Variablen?
- 17. Wie bekommt man alle Geburtstage von heute?
- 18. pandas DataFrame - wie man die Dauer von verschiedenen Spielern bekommt
- 19. Wie bekommt man die Knotenfolge des phylogenetischen Baumes in R?
- 20. Wie bekommt man die tatsächlichen Funktionsnamen von diesen Ausgaben
- 21. C# Wie bekommt man die base.Name von Propertyinfo
- 22. Wie bekommt man die Summe einer Reihe von Dezimalzahlen-Strings?
- 23. Wie bekommt man alle Kommentare von Disqus?
- 24. Wie bekommt man die aktuelle Zeit in PHP?
- 25. Wie bekommt man die Länge eines Tisches in Lua?
- 26. Wie bekommt man alle Frauen?
- 27. Wie bekommt man die Parameternamen der Funktion in PHP?
- 28. Wie bekommt man einen Scanner
- 29. Wie bekommt man Abhängigkeiten Baum?
- 30. Wie bekommt man den Fortschritt von os.walk in Python?