Introduction à JLayeredPane
JLayeredPane est un composant Swing qui nous permet d'ajouter des composants à une couche différente. Un exemple courant de «couche différente» est un JLayeredPane contextuel. Lorsque nous devons afficher une boîte de dialogue, un avertissement ou des informations, nous utilisons une fenêtre contextuelle. Ceci peut être réalisé en utilisant JLayeredPane.
Déclaration:
public class JLayeredPane extends JComponent implements Accessible
Couches de JLayeredPane
Voici quelques couches de JLayeredPane comme expliqué ci-dessous en détail:
- DEFAULT_LAYER: Il s'agit de la couche standard et inférieure, où la plupart des composants sont insérés.
- PALETTE_LAYER: cette couche de JLayeredPanesits sur la couche par défaut et utile pour les barres d'outils et les palettes flottantes.
- MODAL_LAYER: cette couche de JLayeredPane est utilisée pour les boîtes de dialogue de modèle et affichée au-dessus de la couche de palette.
- POPUP_LAYER: Cette couche de JLayeredPane est utilisée pour afficher des fenêtres contextuelles au-dessus de la couche modale.
- DRAG_LAYER: Un composant est affiché dans ce calque (au-dessus du calque popup) lorsque vous le faites glisser. Une fois le glissement terminé, le composant s'affiche dans son calque d'origine.
Détails du constructeur: c'est le seul constructeur qui crée un volet JLayeredPane.
public JLayeredPane()
Détails de la méthode de JLayeredPane
Voici quelques méthodes que nous utilisons, expliquées ci-dessous dans JLayeredPane:
1. protected void addImpl (Composant comp, Contraintes d'objet, index int): Cette méthode ajoute un composant à ce conteneur à l'index spécifié. En outre, LayoutManager est invité à ajouter le composant spécifié à la disposition de ce conteneur à l'aide de l'objet de contraintes spécifié. Pour cette méthode addLayoutComponent est utilisée.
2. public void remove (int index): Cette méthode supprime un composant de l'index spécifié de ce volet.
3. public void removeAll (): supprime tous les composants de ce volet.
4. public boolean isOptimizedDrawingEnabled (): si les couches du volet peuvent se chevaucher, cela rend le dessin optimisé impossible et renvoie false. Sinon, c'est vrai.
5. public static void putLayer (JComponent c, int layer): Cette méthode définit la couche pour un JComponent. Cette méthode ne provoque aucun effet secondaire comme la peinture, l'ajout, la suppression, etc. Pour avoir ces effets secondaires, vous pouvez utiliser la méthode setLayer ().
6. public static int getLayer (JComponent c): cette méthode renvoie l'attribut de couche du JComponent spécifié.
7. public static JLayeredPane getLayeredPaneAbove (Component c): Cette méthode retourne le premier JLayeredPane qui contient le composant spécifié ou renvoie null si aucun JLayeredPane n'est trouvé.
8. public void setLayer (Component c, int layer): Cette méthode définit l'attribut JLayeredPane du composant spécifié. Il rend le composant le plus bas dans la couche spécifiée.
9. public void setLayer (Composant c, couche int, position int): cette méthode définit l'attribut de couche du composant spécifié et définit la position du composant dans cette couche.
10. public int getLayer (Component c): Cette méthode retourne l'attribut layer du Component spécifié.
11. public int getIndexOf (Component c): Cette méthode retourne l'index du composant spécifié dans le volet en ignorant les couches. Le composant le plus haut est à l'indice zéro et le composant le plus bas est à l'indice le plus élevé.
12. public void moveToFront (Component c): Cette méthode déplace le composant spécifié vers le haut dans sa couche actuelle (position 0).
13. public void moveToBack (Component c): Cette méthode déplace le composant spécifié vers le bas dans sa couche actuelle (position -1).
14. public void setPosition (Composant c, int position): Cette méthode définit la position du composant spécifié dans son calque où 0 est la position la plus haute et –1 est la position la plus basse.
15. public int getPosition (Component c): Cette méthode renvoie la position relative du composant dans sa couche.
16. public int LowestLayer (): Cette méthode renvoie la valeur de la couche la plus élevée de tous les enfants actuels. S'il n'y a pas d'enfants, il renvoie 0.
17. public int LowestLayer (): Cette méthode renvoie la valeur de la couche la plus basse de tous les enfants actuels. S'il n'y a pas d'enfants, il renvoie 0.
18. public int getComponentCountInLayer (int layer): Cette méthode renvoie le nombre d'enfants actuellement présents dans la couche spécifiée.
19. Public Component () getComponentsInLayer (int layer): Cette méthode renvoie les composants dans un tableau présent dans la couche spécifiée.
20. public void paint (Graphics g): Cette méthode peint ce JLayeredPane dans le contexte graphique spécifié.
21. Hashtable protégé getComponentToLayer (): Cette méthode retourne un HashTable qui mappe les composants aux calques.
22. protected Integer getObjectForLayer (int layer): Cette méthode renvoie l'entier associé au calque spécifié.
23. protected int insertIndexForLayer (couche int, position int): Cette méthode détermine et renvoie l'emplacement approprié pour insérer un nouvel enfant en fonction de la couche et de la position spécifiées.
24. protected String paramString (): Cette méthode renvoie la représentation sous forme de chaîne de ce volet. Cette méthode est utilisée en interne à des fins de débogage.
25. public AccessibleContext getAccessibleContext (): Cette méthode renvoie le AccessibleContext associé à ce volet.
Exemple de JLayeredPane
Voici un exemple de JLayeredPane donné ci-dessous avec explication:
Code:
import java.awt.Color;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLayeredPane;
public class JLayeredPaneDemo (
public static void main(String() args) (
JFrame frame = new JFrame("JLayeredPane Demo");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(520, 530);
JLayeredPane jLayeredPane = new JLayeredPane();
JButton jButton1 = new JButton("Open");
jButton1.setBackground(Color.green);
jButton1.setBounds(175, 50, 150, 100);
jLayeredPane.add(jButton1, JLayeredPane.DEFAULT_LAYER);
JButton jButton2 = new JButton("Open");
JButton jButton3 = new JButton("Close");
jButton2.setVisible(false);
jButton3.setVisible(false);
jButton2.setBackground(Color.RED);
jButton3.setBackground(Color.RED);
jButton2.setBounds(75, 125, 150, 100);
jButton3.setBounds(275, 125, 150, 100);
jLayeredPane.add(jButton2, JLayeredPane.PALETTE_LAYER);
jLayeredPane.add(jButton3, JLayeredPane.PALETTE_LAYER);
JButton jButton4 = new JButton("Open");
JButton jButton5 = new JButton("Close");
jButton4.setVisible(false);
jButton5.setVisible(false);
jButton4.setBackground(Color.MAGENTA);
jButton5.setBackground(Color.MAGENTA);
jButton4.setBounds(95, 200, 150, 100);
jButton5.setBounds(255, 200, 150, 100);
jLayeredPane.add(jButton4, JLayeredPane.MODAL_LAYER);
jLayeredPane.add(jButton5, JLayeredPane.MODAL_LAYER);
JButton jButton6 = new JButton("Open");
JButton jButton7 = new JButton("Close");
jButton6.setVisible(false);
jButton7.setVisible(false);
jButton6.setBackground(Color.CYAN);
jButton7.setBackground(Color.CYAN);
jButton6.setBounds(75, 275, 150, 100);
jButton7.setBounds(275, 275, 150, 100);
jLayeredPane.add(jButton6, JLayeredPane.POPUP_LAYER);
jLayeredPane.add(jButton7, JLayeredPane.POPUP_LAYER);
JButton jButton8 = new JButton("Close");
jButton8.setVisible(false);
jButton8.setBackground(Color.GRAY);
jButton8.setBounds(175, 350, 150, 100);
jLayeredPane.add(jButton8, JLayeredPane.DRAG_LAYER);
frame.add(jLayeredPane);
frame.setVisible(true);
jButton1.addActionListener(e -> (
jButton2.setVisible(true);
jButton3.setVisible(true);
));
jButton2.addActionListener(e -> (
jButton4.setVisible(true);
jButton5.setVisible(true);
));
jButton3.addActionListener(e -> (
jButton2.setVisible(false);
jButton3.setVisible(false);
));
jButton4.addActionListener(e -> (
jButton6.setVisible(true);
jButton7.setVisible(true);
));
jButton5.addActionListener(e -> (
jButton4.setVisible(false);
jButton5.setVisible(false);
));
jButton6.addActionListener(e -> (
jButton8.setVisible(true);
));
jButton7.addActionListener(e -> (
jButton6.setVisible(false);
jButton7.setVisible(false);
));
jButton8.addActionListener(e -> (
jButton8.setVisible(false);
));
)
)
Explication
Dans cet exemple, nous avons implémenté un programme qui montre différentes couches de JLayeredPane et comment insérer / supprimer des composants du volet.
- Tout d'abord, nous avons créé un cadre et y avons ajouté un JLayeredPane.
- Ajout de boutons dans différents calques du volet JLayeredPane.
- Écouteurs d'actions attachés aux boutons pour afficher ou masquer le calque suivant.
- La position des boutons avec le calque est définie de manière à ce qu'elle soit correcte.
Production:
1. Ceci est notre application et ce bouton vert est ajouté à la couche la plus basse.
2. Lorsqu'un utilisateur clique sur un bouton vert de la première couche, la deuxième couche s'ouvre.
3. Lorsque vous cliquez sur le bouton Ouvrir dans le deuxième calque, le troisième calque dans JLayeredPane est ouvert.
4. Lorsque vous cliquez sur le bouton d'ouverture du troisième calque, le quatrième calque s'ouvre.
5. Lorsque vous cliquez sur le bouton d'ouverture dans le quatrième calque, le cinquième calque est ouvert.
6. Lorsque vous cliquez sur le bouton de fermeture dans le cinquième calque, le calque de JLayeredPane est fermé.
7. Lorsque vous cliquez sur le bouton de fermeture dans le quatrième calque, le calque de JLayeredPane est fermé.
8. Lorsque vous cliquez sur le bouton Fermer dans le troisième calque, le calque de JLayeredPane est fermé.
9. Lorsque vous cliquez sur le bouton de fermeture du deuxième calque, le calque est fermé.
Conclusion
JLayeredPane est facile à utiliser et un composant important dans Swing. Il facilite la décision entre les composants tout en chevauchant les situations.
Articles recommandés
Ceci est un guide de JLayeredPane. Nous discutons ici des couches, du constructeur et des méthodes de JLayeredPane ainsi que de l'exemple et de son implémentation de code. Vous pouvez également consulter les articles suivants pour en savoir plus -
- JFrame en Java
- JComponent en Java
- JCheckBox en Java
- Qu'est-ce que la JVM?
- Exemples de cases à cocher dans Bootstrap