Introducere în JLayeredPane
JLayeredPane este o componentă Swing care ne permite să adăugăm componente la un strat diferit. Un exemplu obișnuit de „strat diferit” este un pop-up JLayeredPane. Atunci când trebuie să afișăm unele ferestre de dialog, avertisment sau informații, folosim o fereastră pop-up. Acest lucru poate fi realizat folosind JLayeredPane.
Declaraţie:
public class JLayeredPane extends JComponent implements Accessible
Straturile JLayeredPane
Iată câteva straturi de JLayeredPane așa cum este explicat mai jos în detaliu:
- DEFAULT_LAYER: Acesta este stratul standard și cel din partea de jos, în care sunt introduse majoritatea componentelor.
- PALETTE_LAYER: Acest strat de JLayeredPanesits peste stratul implicit și util pentru barele de instrumente și paletele plutitoare.
- MODAL_LAYER: Acest strat de JLayeredPane este utilizat pentru dialogurile de model și afișat deasupra stratului de paletă.
- POPUP_LAYER: Acest strat de JLayeredPaneis folosit pentru a afișa ferestrele popup deasupra stratului modal.
- DRAG_LAYER: Un component este afișat în acest strat (deasupra stratului popup) în timp ce îl trageți. Când glisarea este terminată, componenta este afișată în stratul inițial.
Detalii despre constructor: Acesta este singurul constructor care creează un JLayeredPane.
public JLayeredPane()
Detalii despre metoda JLayeredPane
Iată câteva metode pe care le folosim, explicate mai jos în JLayeredPane:
1. protected void addImpl (Component comp, Obiecte constrângeri, int index): Această metodă adaugă o componentă la acest container la indexul specificat. De asemenea, LayoutManager este notificat pentru a adăuga componenta specificată la aspectul acestui container folosind obiectul de constrângeri specificat. Pentru această metodă addLayoutComponent este utilizată.
2. public void remove (int index): Această metodă elimină o componentă din indicele specificat al acestui panou.
3. public void removeAll (): elimină toate componentele din acest panou.
4. public boolean isOptimizedDrawingEnabled (): Dacă straturile din panou se pot suprapune, face desenul optimizat imposibil și returnează fals. Altfel este adevărat.
5. public static void putLayer (JComponent c, int layer): Această metodă stabilește stratul pentru un JComponent. Această metodă nu provoacă efecte secundare cum ar fi vopsea, adăugare, eliminare etc. Pentru a avea aceste efecte secundare, puteți utiliza metoda setLayer ().
6. public static int getLayer (JComponent c): Această metodă returnează atributul layer al JComponent specificat.
7. Public static JLayeredPane getLayeredPaneAbove (Componenta c): Această metodă returnează primul JLayeredPane care conține componenta specificată sau returnează nul dacă nu este găsit JLayeredPane.
8. public void setLayer (Componenta c, stratul int): Această metodă stabilește atributul JLayeredPane al componentei specificate. Aceasta face ca componenta să fie cea mai de jos în stratul specificat.
9. public void setLayer (Componenta c, int layer, int position): Această metodă stabilește atributul layer al componentei specificate și stabilește poziția componentei în acel strat.
10. public int getLayer (componenta c): această metodă returnează atributul layer al componentei specificate.
11. public int getIndexOf (Componenta c): Această metodă returnează indexul componentei specificate în panou ignorând straturile. Componenta cea mai de sus se află la indexul zero, iar componenta cea mai de jos este cea mai mare.
12. public void moveToFront (Componenta c): Această metodă mută componenta specificată în partea de sus în stratul său curent (poziția 0).
13. public void moveToBack (Componenta c): Această metodă mută componenta specificată în partea de jos a stratului său curent (poziția -1).
14. public void setPozition (Componenta c, poziția int): Această metodă stabilește poziția componentei specificate în stratul său unde 0 este poziția de sus și –1 este cea mai jos.
15. public int getPosition (Componenta c): Această metodă returnează poziția relativă a componentei în stratul său.
16. public int maximumLayer (): această metodă returnează valoarea celui mai înalt strat de la toți copiii actuali. Dacă nu există copii, se returnează 0.
17. public int lowerLayer (): această metodă returnează valoarea celui mai mic strat de la toți copiii actuali. Dacă nu există copii, se returnează 0.
18. public int getComponentCountInLayer (int layer): Această metodă returnează numărul de copii prezenți în prezent în stratul specificat.
19. Public Component () getComponentsInLayer (int layer): Această metodă returnează componentele într-un tablou prezent în stratul specificat.
20. Public void paint (Grafica g): Această metodă pictează acest JLayeredPane în contextul grafic specificat.
21. Hashtable protejat getComponentToLayer (): Această metodă returnează un HashTable care mapează componentele în straturi.
22. protejat Integer getObjectForLayer (int layer): Această metodă returnează întregul asociat cu stratul specificat.
23. protected int insertIndexForLayer (int strat, poziție int): această metodă determină și returnează locația corespunzătoare pentru a insera un copil nou pe baza stratului și a poziției specificate.
24. protected String paramString (): această metodă returnează reprezentarea șirului acestui panou. Această metodă este utilizată intern în scopuri de depanare.
25. public AccessibleContext getAccessibleContext (): Această metodă returnează AccessibleContext asociată cu acest panou.
Exemplu de JLayeredPane
Iată un exemplu de JLayeredPane dat mai jos cu explicație:
Cod:
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);
));
)
)
Explicaţie
În acest exemplu, am implementat un program care arată diferite straturi de JLayeredPane și cum se pot introduce / elimina componente din panou.
- Mai întâi, am creat un cadru și i-am adăugat un JLayeredPane.
- Apoi adăugate butoane în diferite straturi ale JLayeredPane.
- Ascultă acțiuni ascultate butoanelor pentru a afișa sau ascunde următorul strat.
- Poziția butoanelor cu stratul este setată astfel încât să arate corect.
ieşire:
1. Aceasta este aplicația noastră și acest buton verde este adăugat la stratul de jos.
2. Când un utilizator face clic pe un buton verde din primul strat, cel de-al doilea strat este deschis.
3. Când faceți clic pe butonul deschis din al doilea strat, se deschide cel de-al treilea strat din JLayeredPane.
4. Când faceți clic pe butonul deschis din cel de-al treilea strat, al patrulea strat este deschis.
5. Când faceți clic pe butonul deschis din al patrulea strat, cel de-al cincilea strat este deschis.
6. Când faceți clic pe butonul de închidere din al cincilea strat, stratul JLayeredPane este închis.
7. Când faceți clic pe butonul de închidere din al patrulea strat, stratul JLayeredPane este închis.
8. Când faceți clic pe butonul de închidere din cel de-al treilea strat, stratul de JLayeredPane este închis.
9. Când faceți clic pe butonul de închidere din al doilea strat, stratul este închis.
Concluzie
JLayeredPane este ușor de utilizat și o componentă importantă în Swing. Face mai ușor să decideți între componente în timp ce se suprapun situații.
Articole recomandate
Acesta este un ghid pentru JLayeredPane. Aici discutăm straturile, constructorul și metodele JLayeredPane împreună cu exemplul și implementarea codului său. De asemenea, puteți consulta următoarele articole pentru a afla mai multe -
- JFrame în Java
- JComponent în Java
- JCheckBox în Java
- Ce este JVM?
- Exemple de caseta de selectare în Bootstrap