Úvod do JLayeredPane
JLayeredPane je komponent Swing, ktorý nám umožňuje pridávať komponenty do inej vrstvy. Bežným príkladom „inej vrstvy“ je kontextové okno JLayeredPane. Keď musíme ukázať nejaké dialógové okno, upozornenie alebo informácie, použijeme rozbaľovacie okno. To je možné dosiahnuť pomocou JLayeredPane.
vyhlásenie:
public class JLayeredPane extends JComponent implements Accessible
Vrstvy JLayeredPane
Tu sú niektoré vrstvy JLayeredPane, ako je podrobne vysvetlené nižšie:
- DEFAULT_LAYER: Toto je štandardná a najspodnejšia vrstva, do ktorej je vložená väčšina komponentov.
- PALETTE_LAYER: Táto vrstva JLayeredPanesits nad predvolenou vrstvou a užitočná pre plávajúce panely s nástrojmi a palety.
- MODAL_LAYER: Táto vrstva JLayeredPane sa používa pre dialógy modelu a zobrazuje sa nad vrstvou palety.
- POPUP_LAYER: Táto vrstva JLayeredPaneis sa používa na zobrazenie vyskakovacích okien nad vrstvou modálnej.
- DRAG_LAYER: Komponent je zobrazený v tejto vrstve (nad vyskakovacou vrstvou) pri jej presúvaní. Po dokončení presunu sa komponent zobrazí v pôvodnej vrstve.
Detaily konštruktora: Toto je jediný konštruktor, ktorý vytvára JLayeredPane.
public JLayeredPane()
Podrobnosti o metóde JLayeredPane
Tu je niekoľko metód, ktoré používame a ktoré sú vysvetlené nižšie v JLayeredPane:
1. protected void addImpl (Komponent komponenty, Obmedzenia objektu, index int): Táto metóda pridá komponent do tohto kontajnera v určenom indexe. Aplikácia LayoutManager je tiež informovaná o pridaní určeného komponentu k rozmiestneniu tohto kontajnera pomocou zadaného objektu obmedzení. Pre túto metódu addLayoutComponent sa používa.
2. public void remove (int index): Táto metóda odstráni komponent zo zadaného indexu tejto tably.
3. public void removeAll (): Odstráni všetky komponenty z tejto tably.
4. public boolean isOptimizedDrawingEnabled (): Ak sa vrstvy v paneli môžu prekrývať, je optimalizovaný výkres nemožný a vracia nepravdivé. Inak je to pravda.
5. verejné statické neplatné putLayer (JComponent c, int layer): Táto metóda nastavuje vrstvu pre JComponent. Táto metóda nespôsobuje žiadne vedľajšie účinky, ako je maľovanie, pridávanie, odstraňovanie atď. Ak chcete mať tieto vedľajšie účinky, môžete použiť metódu setLayer ().
6. public static int getLayer (JComponent c): Táto metóda vracia atribút vrstvy určeného JComponent.
7. public static JLayeredPane getLayeredPaneAbove (komponent c): Táto metóda vracia prvý JLayeredPane, ktorý obsahuje špecifikovanú zložku, alebo vracia hodnotu null, ak sa nenašiel žiadny JLayeredPane.
8. public void setLayer (komponent c, int vrstva): Táto metóda nastavuje atribút JLayeredPane určeného komponentu. Vďaka tomu je komponent najspodnejší v určenej vrstve.
9. public void setLayer (Komponent c, int vrstva, int position): Táto metóda nastavuje atribút vrstvy určeného komponentu a nastavuje pozíciu komponentu v tejto vrstve.
10. public int getLayer (komponent c): Táto metóda vracia atribút vrstvy určeného komponentu.
11. public int getIndexOf (Komponent c): Táto metóda vráti index určeného komponentu v table ignorovaním vrstiev. Najvyšší komponent je na nule a najspodnejší komponent na najvyššom indexe.
12. public void moveToFront (komponent c): Táto metóda presunie určený komponent na vrchol v jeho aktuálnej vrstve (pozícia 0).
13. public void moveToBack (komponent c): Táto metóda presunie špecifikovaný komponent naspodok v jeho aktuálnej vrstve (pozícia -1).
14. public void setPosition (komponent c, int position): Táto metóda nastavuje pozíciu špecifikovaného komponentu v rámci jeho vrstvy, kde 0 je najvyššia pozícia a –1 je najspodnejšia pozícia.
15. public int getPosition (komponent c): Táto metóda vracia relatívnu polohu komponentu v rámci jeho vrstvy.
16. public int najvyššejLayer (): Táto metóda vracia hodnotu najvyššej vrstvy zo všetkých súčasných detí. Ak nie sú žiadne deti, vráti 0.
17. public int najnižšejLayer (): Táto metóda vracia hodnotu najnižšej vrstvy od všetkých súčasných detí. Ak nie sú žiadne deti, vráti 0.
18. public int getComponentCountInLayer (int layer): Táto metóda vracia počet detí, ktoré sa aktuálne nachádzajú v zadanej vrstve.
19. public Component () getComponentsInLayer (int layer): Táto metóda vracia komponenty v poli prítomnom v špecifikovanej vrstve.
20. public void paint (Graphics g): Táto metóda maľuje tento JLayeredPane v špecifikovanom grafickom kontexte.
21. protected Hashtable getComponentToLayer (): Táto metóda vracia tabuľku HashTable, ktorá mapuje komponenty do vrstiev.
22. protected Integer getObjectForLayer (int layer): Táto metóda vráti celé číslo spojené so zadanou vrstvou.
23. protected int insertIndexForLayer (int layer, int position): Táto metóda určuje a vracia správne umiestnenie na vloženie nového dieťaťa na základe zadanej vrstvy a polohy.
24. protected String paramString (): Táto metóda vracia reťazcové znázornenie tohto panela. Táto metóda sa používa interne na účely ladenia.
25. public AccessibleContext getAccessibleContext (): Táto metóda vracia AccessibleContext spojený s touto tablou.
Príklad JLayeredPane
Tu je príklad JLayeredPane s vysvetlením:
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);
));
)
)
vysvetlenie
V tomto príklade sme implementovali program, ktorý ukazuje rôzne vrstvy JLayeredPane a ako vkladať / odoberať komponenty z tably.
- Najprv sme vytvorili rámec a do neho sme pridali JLayeredPane.
- Potom boli pridané tlačidlá v rôznych vrstvách JLayeredPane.
- Pripojení poslucháči akcií k tlačidlám na zobrazenie alebo skrytie ďalšej vrstvy.
- Poloha tlačidiel s vrstvou je nastavená tak, aby vyzerala správne.
Výkon:
1. Toto je naša aplikácia a toto zelené tlačidlo sa pridá do najspodnejšej vrstvy.
2. Keď používateľ klikne na zelené tlačidlo z prvej vrstvy, otvorí sa druhá vrstva.
3. Po kliknutí na tlačidlo otvorenia v druhej vrstve sa otvorí tretia vrstva v JLayeredPane.
4. Po kliknutí na tlačidlo otvorenia v tretej vrstve sa otvorí štvrtá vrstva.
5. Po kliknutí na tlačidlo otvorenia vo štvrtej vrstve sa otvorí piata vrstva.
6. Po kliknutí na tlačidlo Zavrieť v piatej vrstve sa vrstva JLayeredPane zatvorí.
7. Po kliknutí na tlačidlo Zavrieť vo štvrtej vrstve sa vrstva JLayeredPane zatvorí.
8. Po kliknutí na tlačidlo Zavrieť v tretej vrstve sa vrstva JLayeredPane zatvorí.
9. Po kliknutí na tlačidlo Zavrieť v druhej vrstve sa vrstva zatvorí.
záver
JLayeredPane sa ľahko používa a je dôležitou súčasťou Swing. Uľahčuje sa rozhodovanie medzi komponentmi a prekrývajúcimi sa situáciami.
Odporúčané články
Toto je sprievodca JLayeredPane. Tu diskutujeme vrstvy, konštruktory a metódy JLayeredPane spolu s príkladom a implementáciou kódu. Ďalšie informácie nájdete aj v nasledujúcich článkoch -
- JFrame v Jave
- JComponent v Jave
- JCheckBox v Jave
- Čo je JVM?
- Príklady začiarkavacieho políčka v Bootstrap