Úvod do JLayeredPane

JLayeredPane je komponenta Swing, která nám umožňuje přidávat komponenty do jiné vrstvy. Běžným příkladem „jiné vrstvy“ je vyskakovací JLayeredPane. Když musíme zobrazit nějaké dialogové okno, varování nebo informace, použijeme vyskakovací okno. Toho lze dosáhnout pomocí JLayeredPane.

Prohlášení:

public class JLayeredPane extends JComponent implements Accessible

Vrstvy JLayeredPane

Zde jsou některé vrstvy JLayeredPane, jak je podrobně vysvětleno níže:

  • DEFAULT_LAYER: Toto je standardní a nejspodnější vrstva, do které je vložena většina komponent.
  • PALETTE_LAYER: Tato vrstva JLayeredPanesits přes výchozí vrstvu a užitečná pro plovoucí panely nástrojů a palety.
  • MODAL_LAYER: Tato vrstva JLayeredPane se používá pro modelová dialogová okna a zobrazuje se nad vrstvou palety.
  • POPUP_LAYER: Tato vrstva JLayeredPaneis slouží k zobrazení vyskakovacích oken nad vrstvou modální.
  • DRAG_LAYER: V této vrstvě (nad vyskakovací vrstvou) se zobrazí komponenta, zatímco ji přetáhnete. Po dokončení přetažení se komponenta zobrazí v původní vrstvě.

Podrobnosti konstruktoru: Toto je jediný konstruktor, který vytváří JLayeredPane.

public JLayeredPane()

Podrobnosti o metodě JLayeredPane

Zde jsou některé metody, které používáme, vysvětlené níže v JLayeredPane:

1. protected void addImpl (Component comp, Object Objectings, int index): Tato metoda přidá komponentu do tohoto kontejneru v určeném indexu. Rovněž je LayoutManager upozorněn, aby přidal zadanou komponentu k rozvržení tohoto kontejneru pomocí zadaného objektu omezení. Pro tuto metodu addLayoutComponent se používá.

2. public void remove (int index): Tato metoda odstraní komponentu ze zadaného indexu tohoto podokna.

3. public void removeAll (): Odstraní všechny komponenty z tohoto panelu.

4. public boolean isOptimizedDrawingEnabled (): Pokud se vrstvy v panelu mohou překrývat, znemožní optimalizovaný výkres a vrátí false. Jinak pravda.

5. public static void putLayer (JComponent c, int layer): Tato metoda nastaví vrstvu pro JComponent. Tato metoda nezpůsobuje žádné vedlejší účinky, jako je malování, přidávání, odebírání atd. Chcete-li mít tyto nežádoucí účinky, můžete použít metodu setLayer ().

6. public static int getLayer (JComponent c): Tato metoda vrací atribut vrstvy určeného JComponentu.

7. public static JLayeredPane getLayeredPaneAbove (komponenta c): Tato metoda vrací první JLayeredPane, který obsahuje specifikovanou komponentu, nebo vrací null, pokud není nalezen žádný JLayeredPane.

8. public void setLayer (komponenta c, int vrstva): Tato metoda nastavuje atribut JLayeredPane zadané komponenty. Díky tomu je komponenta nejspodnější v určené vrstvě.

9. public void setLayer (Komponenta c, int vrstva, int pozice): Tato metoda nastavuje atribut vrstvy určené komponenty a nastavuje pozici komponenty v této vrstvě.

10. public int getLayer (komponenta c): Tato metoda vrací atribut vrstvy určené komponenty.

11. public int getIndexOf (komponenta c): Tato metoda vrací index zadané komponenty v podokně ignorující vrstvy. Nejvyšší komponenta je na nule indexu a spodní část na nejvyšší indexu.

12. public void moveToFront (komponenta c): Tato metoda přesune zadanou komponentu na vrchol v aktuální vrstvě (pozice 0).

13. public void moveToBack (Component c): Tato metoda přesune zadanou komponentu na spodní část v její aktuální vrstvě (pozice -1).

14. public void setPosition (komponenta c, int position): Tato metoda nastavuje polohu zadané komponenty v její vrstvě, kde 0 je nejvyšší pozice a –1 je nejspodnější pozice.

15. public int getPosition (komponenta c): Tato metoda vrací relativní polohu komponenty v její vrstvě.

16. public int nejvyššíLayer (): Tato metoda vrací hodnotu nejvyšší vrstvy ze všech současných dětí. Pokud nejsou žádné děti, vrátí 0.

17. public int nejnižšíLayer (): Tato metoda vrací hodnotu nejnižší vrstvy ze všech současných dětí. Pokud nejsou žádné děti, vrátí 0.

18. public int getComponentCountInLayer (int vrstva): Tato metoda vrací počet dětí aktuálně přítomných v zadané vrstvě.

19. public Component () getComponentsInLayer (int layer): Tato metoda vrací komponenty v matici přítomné ve zadané vrstvě.

20. public void paint (Graphics g): Tato metoda maluje tento JLayeredPane v zadaném grafickém kontextu.

21. protected Hashtable getComponentToLayer (): Tato metoda vrací HashTable, která mapuje komponenty do vrstev.

22. protected Integer getObjectForLayer (int layer): Tato metoda vrací celé číslo spojené se zadanou vrstvou.

23. protected int insertIndexForLayer (int vrstva, int pozice): Tato metoda určuje a vrací správné umístění pro vložení nového dítěte na základě zadané vrstvy a pozice.

24. protected String paramString (): Tato metoda vrací řetězcovou reprezentaci tohoto podokna. Tato metoda je interně používána pro účely ladění.

25. public AccessibleContext getAccessibleContext (): Tato metoda vrací AccessibleContext spojený s tímto panelem.

Příklad JLayeredPane

Níže je uveden příklad JLayeredPane s vysvětlení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);
));
)
)

Vysvětlení

V tomto příkladu jsme implementovali program, který ukazuje různé vrstvy JLayeredPane a jak vkládat / odebírat komponenty z panelu.

  • Nejprve jsme vytvořili rámec a do něj jsme přidali JLayeredPane.
  • Poté přidali tlačítka v různých vrstvách JLayeredPane.
  • K tlačítkům připojte posluchače akcí k zobrazení nebo skrytí další vrstvy.
  • Poloha tlačítek s vrstvou je nastavena tak, aby vypadala správně.

Výstup:

1. Toto je naše aplikace a toto zelené tlačítko se přidá do nejspodnější vrstvy.

2. Když uživatel klepne na zelené tlačítko z první vrstvy, otevře se druhá vrstva.

3. Po kliknutí na tlačítko Otevřít ve druhé vrstvě se otevře třetí vrstva v JLayeredPane.

4. Po kliknutí na tlačítko Otevřít ve třetí vrstvě se otevře čtvrtá vrstva.

5. Po kliknutí na tlačítko Otevřít ve čtvrté vrstvě se otevře pátá vrstva.

6. Po klepnutí na tlačítko Zavřít v páté vrstvě se vrstva JLayeredPane uzavře.

7. Po kliknutí na tlačítko Zavřít ve čtvrté vrstvě se vrstva JLayeredPane uzavře.

8. Po kliknutí na tlačítko Zavřít ve třetí vrstvě se vrstva JLayeredPane uzavře.

9. Kliknutím na tlačítko Zavřít ve druhé vrstvě se vrstva uzavře.

Závěr

JLayeredPane se snadno používá a je důležitou součástí Swing. Usnadňuje se rozhodování mezi komponenty při překrývajících se situacích.

Doporučené články

Toto je průvodce JLayeredPane. Zde diskutujeme vrstvy, konstruktéry a metody JLayeredPane spolu s příkladem a implementací kódu. Další informace naleznete také v následujících článcích -

  1. JFrame v Javě
  2. JComponent v Javě
  3. JCheckBox v Javě
  4. Co je JVM?
  5. Příklady zaškrtávacího políčka v Bootstrapu

Kategorie: