Comment procéder pour obtenir l'ordre z (profondeur de couche) de tous les JInternalFrames dans un JDesktopPane. Il ne semble pas y avoir de moyen direct pour cela. Des idées?Comment obtenir l'ordre z de JInternalFrames dans un JDesktopPane
Répondre
Bien que je n'ai pas essayé cela, la classe Container
(qui est un ancêtre de la classe JDesktopPane
) contient une méthode getComponentZOrder
. En passant un Component
qui est dans le Container
, il renverra l'ordre z de int
. Le Component
avec la valeur de z-order la plus basse retournée par la méthode est dessinée en dernier, en d'autres termes, est dessinée en haut.
Couplage avec la méthode JDesktopPane.getAllFrames
, qui renvoie un tableau de JInternalFrames
, je pense que l'on pourrait obtenir l'ordre z des cadres internes.
Modifier
Je l'ai fait l'ai essayé et il semble fonctionner:
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);
Dans l'exemple ci-dessus, un JDesktopPane
est peuplé de trois JInternalFrame
s avec le troisième ayant une bouton qui affichera une liste de JInternalFrame
s et sa commande z à System.out
.
Un exemple de sortie est la suivante:
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
L'exemple utilise beaucoup de classes internes anonymes juste pour garder le code court, mais un programme réel probablement ne devrait pas le faire.
- 1. Comment obtenir la commande z dans windows?
- 2. Question sur JInternalFrames
- 3. Obtenir l'index z d'un DIV en JavaScript?
- 4. Chaîne Java: comment obtenir la valeur de X, Y et Z à partir d'une chaîne "vt X, Y, Z"
- 5. Z-index sur un img?
- 6. Comment empêcher un contrôle de changer l'ordre Z?
- 7. Convertir a-z pour imprimer abcdef .... z?
- 8. Delphi - Comment contrôle Z Ordre de TOpenDialog
- 9. Cntl + z dans delphi 4.0
- 10. Problème de z-index dans IE7
- 11. Z-index cassé dans IE8?
- 12. z-index: question
- 13. Lucene requête - "Correspond exactement à un de x, y, z"
- 14. ModalPopupExtender et z-index
- 15. z-index ne fonctionne pas dans IE
- 16. Bogue d'index z d'Internet Explorer?
- 17. Codes C# pour obtenir une liste de chaînes comme A à Z?
- 18. Comment puis-je obtenir le comportement z-index souhaité de IE lors de l'utilisation de DIVs imbriquées?
- 19. L'index Z ne fonctionnait pas dans IE7
- 20. CSS z-indices
- 21. WPF: Canvas Z-Index Bug
- 22. Affectation de l'ordre Z pour UIImageView
- 23. passer ctrl + z à pexpect
- 24. Pour obtenir un menu pour un magnétiseur de code dans Vim par un clic de souris
- 25. Comment obtenir les données dans un System.Object
- 26. Comment obtenir un tableau de noms de tables dans ruby
- 27. Problèmes de navigateur et d'index z
- 28. Existe-t-il un moyen de définir une sorte d'index z pour la position z des objets UIImageView?
- 29. Besoin de contrôler "Z Order" des fenêtres dans WPF Application
- 30. IE z-index relatif/bug absolu dans la liste