Java - contrôle de l'ordre des JPanels
En bref, mon besoin est d'avoir une Image de fond dans mon application java, et lors de certains événements, en créer d'autres graphiques sur le haut de l'image.
Je pensais que j'allais utiliser un Composite à dessiner l'image d'arrière-plan, l'ajouter à ma JFrame le début du programme, puis ajouter les autres JPanels sur le dessus de que lors de certains événements. Le problème est Swing donne la JPanels ajout de la première de la plus haute Z index, donc ce qui doit être mon arrière-plan s'affiche au-dessus de tout.
Est-il un moyen de contrôler l'index alphabétique/ordre des JPanels, ou je suis aller sur ce complètement faux?
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le
setComponentZOrder()
pour gérer l'Ordre-Z dans votre application.Ressources :
Sons étranges pour ajouter plusieurs JPanels et z-ordre. Je vous suggère soit simple d'ajouter UN Composite avec le paintComponent(Graphics g) méthode écrasé, où vous tirer la bonne image en fonction de vos événements.
Ou utiliser le CardLayout, et ajouter JLabels (avec des images différentes), puis, quand vos déclencheurs d'événement, utilisez
pour montrer le bon JLabel.
La JLayeredPane est conçu pour ce but. Il vous permet de contrôler l'ordre de superposition des éléments.
Semble raisonnable.
L'ajout d'un panneau à un panneau, comme l'ajout d'un autre élément dans le panneau. Le composant enfant sera peint sur le dessus du panneau parent. Il n'est pas nécessaire de jouer avec l'Ordre-Z.
La clé est de définir un layout manager sur le panneau avec l'image. Ensuite, chaque panneau vous ajouter à l'image du panneau doit être faite non opaque, de sorte que l'image de fond sera peint.
Peut-être le Arrière-Plan Du Panneau peut vous aider. Il le fait automatiquement tout composant ajouté directement dans le panneau de non-opaque.