JLayeredPane - Komplett guide till JLayeredPane med exempel

Innehållsförteckning:

Anonim

Introduktion till JLayeredPane

JLayeredPane är en Swing-komponent som gör det möjligt för oss att lägga till komponenter i ett annat lager. Ett vanligt exempel på ett "annat lager" är en popup-JLayeredPane. När vi måste visa en viss dialog, varning eller information, använder vi ett popup-fönster. Detta kan uppnås med JLayeredPane.

Deklaration:

public class JLayeredPane extends JComponent implements Accessible

Lager av JLayeredPane

Här är några lager av JLayeredPane som förklaras nedan i detalj:

  • DEFAULT_LAYER: Detta är det vanliga och nedersta lagret, där de flesta komponenter sätts in.
  • PALETTE_LAYER: Detta lager av JLayeredPanesits över standardlagret och användbart för flytande verktygsfält och paletter.
  • MODAL_LAYER: Detta lager av JLayeredPane används för modelldialogrutor och visas ovanför palettlagret.
  • POPUP_LAYER: Detta lager av JLayeredPaneis användes för att visa popup-fönster ovanför modalskiktet.
  • DRAG_LAYER: En komponent visas i detta lager (ovan popup-lagret) medan du drar den. När dragningen är klar visas komponenten i sitt ursprungliga lager.

Konstruktordetaljer: Detta är den enda konstruktören som skapar en JLayeredPane.

public JLayeredPane()

Metoddetaljer för JLayeredPane

Här är några metoder som vi använder, förklarade nedan i JLayeredPane:

1. skyddat tomrum addImpl (Component comp, Objektbegränsningar, int index): Den här metoden lägger till en komponent till denna behållare vid det angivna indexet. Dessutom meddelas LayoutManager att lägga till den angivna komponenten i behållarens layout med det angivna begränsningsobjektet. För denna addLayoutComponent-metod används.

2. public void remove (int index): Den här metoden tar bort en komponent från det angivna indexet i det här fönstret.

3. public void removeAll (): Tar bort alla komponenter från det här fönstret.

4. public boolean isOptimizedDrawingEnabled (): Om lager i fönstret kan överlappa varandra, gör det optimerad ritning omöjlig och returnerar falskt. Annars sant.

5. public static void putLayer (JComponent c, int lager): Denna metod anger lagret för en JComponent. Den här metoden orsakar inga biverkningar som måla, lägga till, ta bort osv. För att få dessa biverkningar kan du använda metoden setLayer ().

6. public static int getLayer (JComponent c): Den här metoden returnerar lagerattributet för specificerad JComponent.

7. public static JLayeredPane getLayeredPaneAbove (Komponent c): Den här metoden returnerar det första JLayeredPane som innehåller den angivna komponenten eller returnerar noll om inget JLayeredPane hittas.

8. public void setLayer (komponent c, int-lager): Den här metoden anger JLayeredPane-attributet för den angivna komponenten. Det gör komponenten längst ned i det angivna lagret.

9. public void setLayer (komponent c, int lager, int position): Denna metod anger lagattributet för den angivna komponenten och anger positionen för komponenten i det lagret.

10. public int getLayer (Component c): Den här metoden returnerar lagerattributet för den angivna komponenten.

11. public int getIndexOf (Komponent c): Den här metoden returnerar indexet för den angivna komponenten i rutan som ignorerar lagren. Den översta komponenten är vid index noll och den längsta komponenten är på det högsta indexet.

12. public void moveToFront (komponent c): Den här metoden flyttar den angivna komponenten till toppen i sitt nuvarande lager (position 0).

13. public void moveToBack (komponent c): Den här metoden flyttar den angivna komponenten till botten i sitt nuvarande lager (position -1).

14. public void setPosition (Component c, int position): Denna metod anger positionen för den angivna komponenten i dess lager där 0 är den översta positionen och –1 är den nedersta positionen.

15. public int getPosition (komponent c): Denna metod returnerar komponentens relativa position i dess lager.

16. public int maximumLayer (): Denna metod returnerar värdet på det högsta lagret från alla nuvarande barn. Om det inte finns några barn, returnerar det 0.

17. public int lowLayer (): Denna metod returnerar värdet på det lägsta lagret från alla nuvarande barn. Om det inte finns några barn, returnerar det 0.

18. public int getComponentCountInLayer (int lager): Den här metoden returnerar antalet barn som för närvarande finns i det angivna lagret.

19. public Component () getComponentsInLayer (int lager): Den här metoden returnerar komponenterna i en matris som finns i det angivna lagret.

20. public void paint (Grafik g): Den här metoden målar detta JLayeredPane inom det angivna grafiska sammanhanget.

21. skyddad Hashtable getComponentToLayer (): Denna metod returnerar en HashTable som kartlägger komponenter till lager.

22. skyddad heltal getObjectForLayer (int lager): Den här metoden returnerar heltalet som är associerat med det angivna lagret.

23. skyddad int insertIndexForLayer (int lager, int position): Den här metoden bestämmer och returnerar rätt plats för att infoga ett nytt barn baserat på det angivna lagret och positionen.

24. skyddad String paramString (): Den här metoden returnerar strängrepresentationen för detta fönster. Den här metoden används internt för felsökning.

25. public AccessibleContext getAccessibleContext (): Den här metoden returnerar AccessibleContext som är associerad med det här fönstret.

Exempel på JLayeredPane

Här är ett exempel på JLayeredPane nedan med förklaring:

Koda:

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);
));
)
)

Förklaring

I det här exemplet har vi implementerat ett program som visar olika lager av JLayeredPane och hur man sätter in / tar bort komponenter från rutan.

  • Först har vi skapat en ram och lagt till en JLayeredPane till den.
  • Lade sedan till knappar i olika lager i JLayeredPane.
  • Bifogade actionlyssnare till knapparna för att visa eller dölja nästa lager.
  • Knapparnas placering med lagret är inställd så att den ser ordentlig ut.

Produktion:

1. Detta är vår applikation och den gröna knappen läggs till i det nedersta lagret.

2. När en användare klickar på en grön knapp från det första lagret öppnas det andra lagret.

3. När du klickar på den öppna knappen i det andra lagret öppnas det tredje lagret i JLayeredPane.

4. När du klickar på den öppna knappen i det tredje lagret öppnas det fjärde lagret.

5. När du klickar på den öppna knappen i det fjärde lagret öppnas det femte lagret.

6. När du klickar på stängningsknappen i det femte lagret stängs skiktet av JLayeredPane.

7. När du klickar på stängningsknappen i det fjärde lagret stängs skiktet av JLayeredPane.

8. När du klickar på stängningsknappen i det tredje lagret stängs skiktet av JLayeredPane.

9. När du klickar på stängningsknappen i det andra lagret stängs lagret.

Slutsats

JLayeredPane är lätt att använda och en viktig komponent i Swing. Det gör det enkelt att bestämma bland komponenter medan situationer överlappar varandra.

Rekommenderade artiklar

Detta är en guide till JLayeredPane. Här diskuterar vi lager, konstruktör och metoder för JLayeredPane tillsammans med exempel och dess kodimplementering. Du kan också titta på följande artiklar för att lära dig mer -

  1. JFrame i Java
  2. JComponent i Java
  3. JCheckBox i Java
  4. Vad är JVM?
  5. Exempel på kryssrutan i Bootstrap