Bevezetés a JLayeredPane-be
A JLayeredPane egy Swing komponens, amely lehetővé teszi számunkra, hogy összetevőket adjunk egy másik réteghez. A „más réteg” általános példája a felbukkanó JLayeredPane. Amikor meg kell mutatnia néhány párbeszédpanelt, figyelmeztetést vagy információt, egy felbukkanó ablakot használunk. Ez a JLayeredPane használatával érhető el.
Nyilatkozat:
public class JLayeredPane extends JComponent implements Accessible
A JLayeredPane rétegei
Íme néhány JLayeredPane réteg, az alábbiakban részletesebben:
- DEFAULT_LAYER: Ez a standard és a legalsó réteg, ahol a legtöbb elem beillesztésre kerül.
- PALETTE_LAYER: A JLayeredPanesits e rétege az alapértelmezett réteg fölött, és úszó eszköztárak és paletták számára használható.
- MODAL_LAYER: A JLayeredPane ezt a rétegét használják a modell párbeszédpanelekhez, és a palettaréteg felett jelennek meg.
- POPUP_LAYER: A JLayeredPaneis e rétege felbukkanó ablakokat mutatott a modális réteg felett.
- DRAG_LAYER: Az összetevő megjelenik ebben a rétegben (a felugró réteg felett), miközben húzza. Amikor a húzás befejeződött, az összetevő az eredeti rétegben jelenik meg.
Kivitelező adatai: Ez az egyetlen kivitelező, amely létrehoz egy JLayeredPane-t.
public JLayeredPane()
A JLayeredPane módszer részletei
Íme néhány módszer, amelyet használunk, az alábbiakban ismertetve a JLayeredPane-ben:
1. védett void addImpl (Component comp, Object constraints, int index): Ez a módszer hozzáad egy összetevőt ehhez a tárolóhoz a megadott indexen. Ezenkívül a LayoutManager értesítést kap arról, hogy a megadott összetevőt hozzáadja a tároló elrendezéséhez a megadott korlátozások objektummal. Ehhez az addLayoutComponent módszert kell használni.
2. public void remove (int index): Ez a módszer eltávolítja az összetevőt az ablaktábla megadott indexéből.
3. public void removeAll (): Eltávolítja az összes összetevőt az ablaktól .
4. public boolean isOptimizedDrawingEnabled (): Ha az ablaktáblán lévõ rétegek átfedhetik egymást, lehetetlenné teszi az optimalizált rajzot, és hamisat ad vissza. Egyébként igaz.
5. public static void putLayer (JComponent c, int réteg): Ez a módszer a JComponent rétegét állítja be. Ez a módszer nem okoz semmilyen mellékhatást, például festéket, hozzáadást, eltávolítást stb. Ezen mellékhatások eléréséhez használhatja a setLayer () módszert.
6. public static int getLayer (JComponent c): Ez a módszer a megadott JComponent rétegttribútumát adja vissza.
7. nyilvános statikus JLayeredPane getLayeredPaneAbove (c komponens): Ez a módszer az első JLayeredPane-t adja vissza, amely a megadott komponenst tartalmazza, vagy nullát ad vissza, ha nem található JLayeredPane.
8. public void setLayer (c komponens, int réteg): Ez a módszer beállítja a megadott komponens JLayeredPane attribútumát. Lehetővé teszi az összetevő legalacsonyabb szintjét a megadott rétegben.
9. public void setLayer (c komponens, int réteg, int pozíció): Ez a módszer állítja be a megadott komponens rétegattribútumát, és beállítja az összetevő pozícióját ebben a rétegben.
10. public int getLayer (c komponens): Ez a módszer a megadott összetevő rétegttribútumát adja vissza.
11. public int getIndexOf (c komponens): Ez a módszer visszaadja a panelen a megadott összetevő indexét, figyelmen kívül hagyva a rétegeket. A legfelső elem a nulla indexnél, a legalacsonyabb a legmagasabb indexnél van.
12. public void moveToFront (c komponens): Ez a módszer mozgatja a megadott összetevőt az aktuális réteg tetejére (0. pozíció).
13. public void moveToBack (c komponens): Ez a módszer a megadott összetevőt az aktuális rétegének aljára mozgatja (-1 helyzet).
14. public void setPosition (c komponens, int helyzet): Ez a módszer beállítja a megadott komponens helyzetét a rétegben, ahol 0 a legfelső pozíció és –1 a legalsó pozíció.
15. public int getPosition (c komponens): Ez a módszer visszaadja az összetevő relatív helyzetét a rétegén belül.
16. public int maximumLayer (): Ez a módszer a jelenlegi gyermekek legmagasabb rétegének értékét adja vissza. Ha nincsenek gyerekek, akkor 0-t ad vissza.
17. public int legkevesebb (): Ez a módszer a jelenlegi gyermekek legalacsonyabb rétegének értékét adja vissza. Ha nincsenek gyerekek, akkor 0-t ad vissza.
18. public int getComponentCountInLayer (int réteg): Ez a módszer a megadott rétegben jelenleg jelenlévő gyermekek számát adja vissza.
19. public Component () getComponentsInLayer (int réteg): Ez a módszer az összetevőket egy megadott rétegben lévő tömbben adja vissza.
20. public void paint (g grafika): Ez a módszer a JLayeredPane-t a megadott grafikus környezetben festi ki.
21. védett hashtable getComponentToLayer (): Ez a módszer egy HashTable-t ad vissza, amely az összetevőket rétegekké térképezi.
22. védett egész szám getObjectForLayer (int réteg): Ez a módszer a megadott réteghez társított egész számot adja vissza.
23. védett int insertIndexForLayer (int réteg, int pozíció): Ez a módszer a megadott réteg és helyzet alapján meghatározza és visszatér a megfelelő helyet egy új gyermek beszúrásához.
24. védett karakterlánc paramString (): Ez a módszer visszaadja az ablaktábla karakterlánc-ábrázolását. Ezt a módszert belsőleg használják hibakeresés céljából.
25. public AccessibleContext getAccessibleContext (): Ez a módszer adja vissza az ablaktáblához társított AccessibleContext fájlt .
Példa a JLayeredPane-re
Íme egy példa a JLayeredPane alább bemutatott magyarázatára:
Kód:
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);
));
)
)
Magyarázat
Ebben a példában olyan programot hajtottunk végre, amely megmutatja a JLayeredPane különféle rétegeit és az összetevők beillesztésének / eltávolításának módját az ablaktáblán.
- Először létrehoztunk egy keretet, és hozzáadtunk egy JLayeredPane-t.
- Ezután hozzáadott gombok a JLayeredPane különféle rétegeiben.
- A gombokhoz csatolt akcióhallgatók a következő réteg megjelenítéséhez vagy elrejtéséhez.
- A gombok és a réteg helyzetét úgy állítják be, hogy megfelelően nézzen ki.
Kimenet:
1. Ez a mi alkalmazásunk, és ezt a zöld gombot adjuk hozzá a legalsó réteghez.
2. Amikor a felhasználó az első rétegből egy zöld gombra kattint, a második réteg megnyílik.
3. A második réteg megnyitásának gombjára kattintva a JLayeredPane harmadik rétege megnyílik.
4. A harmadik réteg megnyitásának gombjára kattintva a negyedik réteg kinyílik.
5. Ha rákattint a negyedik réteg nyitó gombjára, az ötödik réteg kinyílik.
6. Ha rákattint az Bezárás gombra az ötödik rétegben, a JLayeredPane réteg bezáródik.
7. Ha rákattint a bezárás gombra a negyedik rétegben, a JLayeredPane rétege bezáródik.
8. Ha a bezárás gombra kattint a harmadik rétegben, a JLayeredPane rétege bezáródik.
9. A második réteg bezárás gombjára kattintva a réteg bezáródik.
Következtetés
A JLayeredPane könnyen kezelhető és fontos elem a Swingben. Ez megkönnyíti az alkatrészek közötti döntést, miközben az esetek átfedésekben vannak.
Ajánlott cikkek
Ez egy útmutató a JLayeredPane-hez. Itt tárgyaljuk a JLayeredPane rétegeit, kivitelezőjét és módszereit, példát, valamint annak kódvégrehajtását. A következő cikkeket is megnézheti további információkért -
- JFrame Java
- JComponent Java-ban
- JCheckBox Java-ban
- Mi a JVM?
- Példák a Bootstrap jelölőnégyzetére