JLayeredPane - Volledige gids voor JLayeredPane met voorbeelden

Inhoudsopgave:

Anonim

Inleiding tot JLayeredPane

JLayeredPane is een Swing-component waarmee we componenten aan een andere laag kunnen toevoegen. Een veelgebruikt voorbeeld van een "andere laag" is een pop-up JLayeredPane. Wanneer we een dialoogvenster, waarschuwing of informatie moeten weergeven, gebruiken we een pop-upvenster. Dit kan worden bereikt met behulp van JLayeredPane.

Verklaring:

public class JLayeredPane extends JComponent implements Accessible

Lagen van JLayeredPane

Hier zijn enkele lagen van JLayeredPane zoals hieronder in detail wordt uitgelegd:

  • DEFAULT_LAYER: Dit is de standaard- en onderste laag, waar de meeste componenten worden ingevoegd.
  • PALETTE_LAYER: deze laag JLayeredPanesits over de standaardlaag en handig voor zwevende werkbalken en paletten.
  • MODAL_LAYER: Deze laag van JLayeredPane wordt gebruikt voor modeldialogen en wordt boven de paletlaag weergegeven.
  • POPUP_LAYER: Deze laag van JLayeredPaneis gebruikt om pop-upvensters boven de modale laag weer te geven.
  • DRAG_LAYER: Een component wordt weergegeven in deze laag (boven de pop- uplaag ) tijdens het slepen. Wanneer het slepen is voltooid, wordt het onderdeel in de oorspronkelijke laag weergegeven.

Constructordetails: dit is de enige constructor die een JLayeredPane maakt.

public JLayeredPane()

Methodedetails van JLayeredPane

Hier zijn enkele methoden die we gebruiken, hieronder uitgelegd in JLayeredPane:

1. beschermde ongeldige addImpl (Componentcomponent, objectbeperkingen, int index): deze methode voegt een component toe aan deze container bij de opgegeven index. Ook wordt LayoutManager op de hoogte gesteld om het gespecificeerde onderdeel aan de lay-out van deze container toe te voegen met behulp van het opgegeven beperkingenobject. Hiervoor wordt de methode addLayoutComponent gebruikt.

2. public void remove (int index): deze methode verwijdert een component uit de opgegeven index van dit paneel.

3. public void removeAll (): verwijdert alle componenten uit dit paneel.

4. public boolean isOptimizedDrawingEnabled (): als lagen in het paneel elkaar kunnen overlappen, wordt geoptimaliseerd tekenen onmogelijk en wordt false geretourneerd. Anders waar.

5. public static void putLayer (JComponent c, int layer): deze methode stelt de laag in voor een JComponent. Deze methode veroorzaakt geen bijwerkingen zoals verf, toevoegen, verwijderen, enz. Om deze bijwerkingen te krijgen, kunt u de methode setLayer () gebruiken.

6. public static int getLayer (JComponent c): deze methode retourneert het laagkenmerk van de opgegeven JComponent.

7. public static JLayeredPane getLayeredPaneAbove (component c): deze methode retourneert het eerste JLayeredPane dat de opgegeven component bevat of retourneert null als er geen JLayeredPane is gevonden.

8. public void setLayer (component c, int laag): met deze methode wordt het JLayeredPane-kenmerk van de opgegeven component ingesteld. Het maakt de component onder in de opgegeven laag.

9. public void setLayer (component c, int laag, int positie): deze methode stelt het laagkenmerk van de opgegeven component in en stelt de positie van de component in die laag in.

10. public int getLayer (component c): deze methode retourneert het laagkenmerk van de opgegeven component.

11. public int getIndexOf (component c): deze methode retourneert de index van de opgegeven component in het deelvenster en negeert de lagen. De bovenste component bevindt zich op index nul en de onderste component bevindt zich op de hoogste index.

12. public void moveToFront (component c): met deze methode wordt de opgegeven component in de huidige laag naar boven verplaatst (positie 0).

13. public void moveToBack (component c): met deze methode wordt de opgegeven component in de huidige laag naar beneden verplaatst (positie -1).

14. public void setPosition (component c, int positie): deze methode stelt de positie van de opgegeven component in zijn laag in, waarbij 0 de bovenste positie is en –1 de onderste positie is.

15. public int getPosition (component c): deze methode retourneert de relatieve positie van de component in zijn laag.

16. public int highestLayer (): deze methode retourneert de waarde van de hoogste laag van alle huidige kinderen. Als er geen kinderen zijn, wordt 0 geretourneerd.

17. public int leastLayer (): deze methode retourneert de waarde van de laagste laag van alle huidige onderliggende items. Als er geen kinderen zijn, wordt 0 geretourneerd.

18. public int getComponentCountInLayer (int-laag): deze methode retourneert het aantal kinderen dat momenteel in de opgegeven laag aanwezig is.

19. public Component () getComponentsInLayer (int-laag): deze methode retourneert de componenten in een array die aanwezig is in de opgegeven laag.

20. public void paint (Graphics g): deze methode schildert dit JLayeredPane binnen de opgegeven grafische context.

21. beschermde Hashtable getComponentToLayer (): deze methode retourneert een HashTable die componenten toewijst aan lagen.

22. beschermd geheel getal getObjectForLayer (int-laag): deze methode retourneert het gehele getal dat is gekoppeld aan de opgegeven laag.

23. protected int insertIndexForLayer (int-laag, int-positie): deze methode bepaalt en retourneert de juiste locatie om een ​​nieuw kind in te voegen op basis van de opgegeven laag en positie.

24. protected String paramString (): Deze methode retourneert de stringvoorstelling van dit paneel. Deze methode wordt intern gebruikt voor foutopsporing.

25. public AccessibleContext getAccessibleContext (): deze methode retourneert de AccessibleContext die aan dit paneel is gekoppeld.

Voorbeeld van JLayeredPane

Hier is een voorbeeld van JLayeredPane hieronder gegeven met uitleg:

Code:

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

Uitleg

In dit voorbeeld hebben we een programma geïmplementeerd dat verschillende lagen JLayeredPane toont en hoe componenten uit het paneel kunnen worden ingevoegd / verwijderd.

  • Eerst hebben we een frame gemaakt en hieraan een JLayeredPane toegevoegd.
  • Vervolgens knoppen toegevoegd in verschillende lagen van het JLayeredPane.
  • Bijgevoegde actie-luisteraars aan de knoppen om de volgende laag te tonen of te verbergen.
  • De positie van de knoppen met de laag is zo ingesteld dat deze er goed uitziet.

Output:

1. Dit is onze applicatie en deze groene knop wordt toegevoegd aan de onderste laag.

2. Wanneer een gebruiker op een groene knop uit de eerste laag klikt, wordt de tweede laag geopend.

3. Wanneer u op de open-knop in de tweede laag klikt, wordt de derde laag in JLayeredPane geopend.

4. Wanneer op de openknop in de derde laag wordt geklikt, wordt de vierde laag geopend.

5. Wanneer op de openknop in de vierde laag wordt geklikt, wordt de vijfde laag geopend.

6. Wanneer op de sluitknop in de vijfde laag wordt geklikt, wordt de laag JLayeredPane gesloten.

7. Wanneer op de sluitknop in de vierde laag wordt geklikt, wordt de laag JLayeredPane gesloten.

8. Wanneer op de sluitknop in de derde laag wordt geklikt, wordt de laag JLayeredPane gesloten.

9. Wanneer op de sluitknop in de tweede laag wordt geklikt, wordt de laag gesloten.

Conclusie

JLayeredPane is gemakkelijk te gebruiken en een belangrijk onderdeel in Swing. Het maakt het gemakkelijk om te kiezen tussen componenten en tegelijkertijd overlappende situaties.

Aanbevolen artikelen

Dit is een handleiding voor JLayeredPane. Hier bespreken we de lagen, constructor en methoden van JLayeredPane samen met voorbeeld en de code-implementatie. U kunt ook de volgende artikelen bekijken voor meer informatie -

  1. JFrame in Java
  2. JComponent in Java
  3. JCheckBox in Java
  4. Wat is JVM?
  5. Voorbeelden van Checkbox in Bootstrap