JLayeredPane - Teljes útmutató a JLayeredPane-hez példákkal

Tartalomjegyzék:

Anonim

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 -

  1. JFrame Java
  2. JComponent Java-ban
  3. JCheckBox Java-ban
  4. Mi a JVM?
  5. Példák a Bootstrap jelölőnégyzetére