JLayeredPane - Komplett guide til JLayeredPane med eksempler

Innholdsfortegnelse:

Anonim

Introduksjon til JLayeredPane

JLayeredPane er en Swing-komponent som gjør det mulig for oss å legge komponenter til et annet lag. Et vanlig eksempel på et “annet lag” er en pop-up JLayeredPane. Når vi må vise litt dialog, advarsel eller informasjon, bruker vi et popup-vindu. Dette kan oppnås ved hjelp av JLayeredPane.

Erklæring:

public class JLayeredPane extends JComponent implements Accessible

Lag av JLayeredPane

Her er noen lag med JLayeredPane som forklart nedenfor i detalj:

  • DEFAULT_LAYER: Dette er det standard og det nederste laget, der de fleste komponenter er satt inn.
  • PALETTE_LAYER: Dette laget med JLayeredPanesits over standardlaget og er nyttig for flytende verktøylinjer og paletter.
  • MODAL_LAYER: Dette laget av JLayeredPane brukes til modelldialogbokser og vises over palettlaget.
  • POPUP_LAYER: Dette laget av JLayeredPaneis brukes til å vise popup-vinduer over modalaget.
  • DRAG_LAYER: En komponent vises i dette laget (over popup-laget) mens du drar det. Når draingen er ferdig, vises komponenten i det opprinnelige laget.

Konstruktørdetaljer: Dette er den eneste konstruktøren som oppretter en JLayeredPane.

public JLayeredPane()

Metodedetaljer for JLayeredPane

Her er noen metoder vi bruker, forklart nedenfor i JLayeredPane:

1. beskyttet tomrom addImpl (Component comp, Objektbegrensninger, int-indeks): Denne metoden legger til en komponent til denne beholderen ved den angitte indeksen. LayoutManager får også beskjed om å legge til den spesifiserte komponenten i denne beholderens layout ved å bruke det angitte begrensningsobjektet. For denne addLayoutComponent-metoden brukes.

2. public void remove (int index): Denne metoden fjerner en komponent fra den spesifiserte indeksen til denne ruten.

3. public void removeAll (): Fjerner alle komponentene fra denne ruten.

4. public boolean isOptimizedDrawingEnabled (): Hvis lag i ruten kan overlappe hverandre, gjør det optimalisert tegning umulig og returnerer usant. Ellers sant.

5. public static void putLayer (JComponent c, int layer): Denne metoden angir laget for en JComponent. Denne metoden forårsaker ingen bivirkninger som maling, tilsett, fjern osv. For å få disse bivirkningene, kan du bruke setLayer () -metoden.

6. public static int getLayer (JComponent c): Denne metoden returnerer lagattributtet til spesifisert JComponent.

7. offentlig statisk JLayeredPane getLayeredPaneAbove (Komponent c): Denne metoden returnerer det første JLayeredPane som inneholder den spesifiserte komponenten eller returnerer null hvis ingen JLayeredPane er funnet.

8. public void setLayer (Komponent c, int-lag): Denne metoden setter JLayeredPane-attributtet til den spesifiserte komponenten. Den gjør komponenten nederst i det spesifiserte laget.

9. public void setLayer (komponent c, int-lag, int-posisjon): Denne metoden setter lagattributtet til den spesifiserte komponenten og angir posisjonen til komponenten i det laget.

10. public int getLayer (komponent c): Denne metoden returnerer lagattributtet til den spesifiserte komponenten.

11. public int getIndexOf (Komponent c): Denne metoden returnerer indeksen for den spesifiserte komponenten i ruten som ignorerer lagene. Den øverste komponenten er på indeks null og den nederste komponenten er på den høyeste indeksen.

12. public void moveToFront (komponent c): Denne metoden flytter den spesifiserte komponenten til toppen i sitt nåværende lag (posisjon 0).

13. public void moveToBack (komponent c): Denne metoden flytter den spesifiserte komponenten til bunnen i det nåværende laget (posisjon -1).

14. public void setPosition (komponent c, int-posisjon): Denne metoden setter posisjonen til den spesifiserte komponenten i sitt lag der 0 er den øverste posisjonen og –1 er den nederste posisjonen.

15. public int getPosition (komponent c): Denne metoden returnerer den relative posisjonen til komponenten i laget.

16. public int maximumLayer (): Denne metoden returnerer verdien til det høyeste laget fra alle nåværende barn. Hvis det ikke er barn, returnerer det 0.

17. public int lowLayer (): Denne metoden returnerer verdien til det laveste laget fra alle nåværende barn. Hvis det ikke er barn, returnerer det 0.

18. public int getComponentCountInLayer (int-lag): Denne metoden returnerer antall barn som for øyeblikket er til stede i det angitte laget.

19. public Component () getComponentsInLayer (int-lag): Denne metoden returnerer komponentene i en matrise som er til stede i det angitte laget.

20. public void paint (Grafikk g): Denne metoden maler dette JLayeredPane innenfor den spesifiserte grafikksammenheng.

21. beskyttet Hashtable getComponentToLayer (): Denne metoden returnerer en HashTable som kartlegger komponenter til lag.

22. beskyttet heltall getObjectForLayer (int-lag): Denne metoden returnerer heltallet tilknyttet det angitte laget.

23. beskyttet int insertIndexForLayer (int-lag, int-posisjon): Denne metoden bestemmer og returnerer riktig sted for å sette inn et nytt barn basert på laget og posisjon som er angitt.

24. Protected String paramString (): Denne metoden returnerer strengrepresentasjonen til denne ruten. Denne metoden brukes internt for feilsøking.

25. public AccessibleContext getAccessibleContext (): Denne metoden returnerer AccessibleContext tilknyttet denne ruten.

Eksempel på JLayeredPane

Her er et eksempel på JLayeredPane gitt nedenfor med forklaring:

Kode:

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

Forklaring

I dette eksemplet har vi implementert et program som viser forskjellige lag med JLayeredPane og hvordan du setter inn / fjerner komponenter fra ruten.

  • Først har vi laget en ramme og lagt en JLayeredPane til den.
  • Deretter lagt til knapper i forskjellige lag i JLayeredPane.
  • Festet actionlyttere til knappene for å vise eller skjule neste lag.
  • Plasseringen av knappene med laget er satt slik at den ser ordentlig ut.

Produksjon:

1. Dette er applikasjonen vår, og denne grønne knappen legges til det nederste laget.

2. Når en bruker klikker på en grønn knapp fra det første laget, åpnes det andre laget.

3. Når du klikker på den åpne knappen i det andre laget, åpnes det tredje laget i JLayeredPane.

4. Når du klikker på den åpne knappen i det tredje laget, åpnes det fjerde laget.

5. Når du klikker på den åpne knappen i det fjerde laget, åpnes det femte laget.

6. Når du klikker på lukkeknappen i det femte laget, lukkes laget av JLayeredPane.

7. Når du klikker på lukkeknappen i det fjerde laget, blir laget av JLayeredPane lukket.

8. Når du klikker på lukkeknappen i det tredje laget, blir laget av JLayeredPane lukket.

9. Når du klikker på lukkeknappen i det andre laget, er laget lukket.

Konklusjon

JLayeredPane er enkel å bruke og en viktig komponent i Swing. Det gjør det enkelt å bestemme mellom komponenter mens situasjoner overlapper hverandre.

Anbefalte artikler

Dette er en guide til JLayeredPane. Her diskuterer vi lagene, konstruktøren og metodene til JLayeredPane sammen med eksempel og implementering av kode. Du kan også se på følgende artikler for å lære mer -

  1. JFrame i Java
  2. JComponent i Java
  3. JCheckBox i Java
  4. Hva er JVM?
  5. Eksempler på avkrysningsrute i Bootstrap