Introduktion til JLayeredPane
JLayeredPane er en Swing-komponent, der gør det muligt for os at tilføje komponenter til et andet lag. Et almindeligt eksempel på et "andet lag" er en pop-up JLayeredPane. Når vi skal vise noget dialog, advarsel eller information, bruger vi et pop op-vindue. Dette kan opnås ved hjælp af JLayeredPane.
Erklæring:
public class JLayeredPane extends JComponent implements Accessible
Lag af JLayeredPane
Her er nogle lag af JLayeredPane som forklaret nedenfor i detaljer:
- DEFAULT_LAYER: Dette er det standard og det nederste lag, hvor de fleste komponenter er indsat.
- PALETTE_LAYER: Dette lag med JLayeredPanesits over standardlaget og er nyttigt til flydende værktøjslinjer og paletter.
- MODAL_LAYER: Dette lag af JLayeredPane bruges til model dialoger og vises over palettlaget.
- POPUP_LAYER: Dette lag af JLayeredPaneis bruges til at vise popup-vinduer over det modale lag.
- DRAG_LAYER: En komponent vises i dette lag (over popup-laget), mens det trækkes. Når trækningen er afsluttet, vises komponenten i det originale lag.
Konstruktørdetaljer: Dette er den eneste konstruktør, der opretter en JLayeredPane.
public JLayeredPane()
Metodedetaljer for JLayeredPane
Her er nogle metoder, som vi bruger, forklaret nedenfor i JLayeredPane:
1. beskyttet tomrum addImpl (Komponentkomp., Objektbegrænsninger, int-indeks): Denne metode tilføjer en komponent til denne beholder ved det specificerede indeks. LayoutManager får også besked om at føje den specificerede komponent til denne containers layout ved hjælp af det specificerede begrænsningsobjekt. Til denne addLayoutComponent-metode bruges.
2. public void remove (int index): Denne metode fjerner en komponent fra det specificerede indeks i denne rude.
3. public void removeAll (): Fjerner alle komponenter fra denne rude.
4. public boolean isOptimizedDrawingEnabled (): Hvis lag i ruden kan overlappe hinanden, gør det optimeret tegning umulig og returnerer falsk. Ellers sandt.
5. public static void putLayer (JComponent c, int-lag): Denne metode indstiller laget for en JComponent. Denne metode forårsager ingen bivirkninger som maling, tilføjelse, fjernelse osv. For at få disse bivirkninger kan du bruge metoden setLayer ().
6. public static int getLayer (JComponent c): Denne metode returnerer lagattributten for specificeret JComponent.
7. offentlig statisk JLayeredPane getLayeredPaneAbove (Komponent c): Denne metode returnerer den første JLayeredPane, der indeholder den specificerede komponent eller returnerer null, hvis der ikke findes nogen JLayeredPane.
8. public void setLayer (komponent c, int-lag): Denne metode indstiller JLayeredPane-attributten for den specificerede komponent. Det gør komponenten nederst i det specificerede lag.
9. public void setLayer (komponent c, int-lag, int-position): Denne metode indstiller lagattributten for den specificerede komponent og indstiller positionen for komponenten i det lag.
10. public int getLayer (komponent c): Denne metode returnerer lagattributten for den specificerede komponent.
11. public int getIndexOf (komponent c): Denne metode returnerer indekset for den specificerede komponent i ruden, der ignorerer lagene. Den øverste komponent er på indeksnul og den nederste komponent er på det højeste indeks.
12. public void moveToFront (komponent c): Denne metode flytter den specificerede komponent til toppen i det aktuelle lag (position 0).
13. public void moveToBack (komponent c): Denne metode flytter den specificerede komponent til bunden i sit nuværende lag (position -1).
14. public void setPosition (komponent c, int position): Denne metode indstiller placeringen af den specificerede komponent inden for dets lag, hvor 0 er den øverste position og –1 er den nederste position.
15. public int getPosition (komponent c): Denne metode returnerer komponentens relative placering inden for dets lag.
16. offentligt højeste lag (): Denne metode returnerer værdien af det højeste lag fra alle nuværende børn. Hvis der ikke er børn, returnerer det 0.
17. public int lowLayer (): Denne metode returnerer værdien af det laveste lag fra alle nuværende børn. Hvis der ikke er børn, returnerer det 0.
18. public int getComponentCountInLayer (int-lag): Denne metode returnerer antallet af børn, der aktuelt findes i det angivne lag.
19. public Component () getComponentsInLayer (int-lag): Denne metode returnerer komponenterne i en matrix, der findes i det angivne lag.
20. public void paint (Grafik g): Denne metode maler denne JLayeredPane inden for den specificerede grafiske kontekst.
21. beskyttet Hashtable getComponentToLayer (): Denne metode returnerer en HashTable, der kortlægger komponenter til lag.
22. beskyttet heltal getObjectForLayer (int-lag): Denne metode returnerer det heltal, der er knyttet til det specificerede lag.
23. beskyttet int insertIndexForLayer (int-lag, int-position): Denne metode bestemmer og returnerer den korrekte placering for at indsætte et nyt barn baseret på det angivne lag og position.
24. Protected String paramString (): Denne metode returnerer strengrepræsentationen af denne rude. Denne metode bruges internt til fejlfinding.
25. public AccessibleContext getAccessibleContext (): Denne metode returnerer AccessibleContext, der er knyttet til denne rude.
Eksempel på JLayeredPane
Her er et eksempel på JLayeredPane givet 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 eksempel har vi implementeret et program, der viser forskellige lag af JLayeredPane, og hvordan man indsætter / fjerner komponenter fra ruden.
- Først har vi oprettet en ramme og føjet en JLayeredPane til den.
- Derefter tilføjede knapper i forskellige lag på JLayeredPane.
- Vedhæftede handlinglyttere til knapperne for at vise eller skjule det næste lag.
- Placeringen af knapperne med laget er indstillet, så det ser ordentligt ud.
Produktion:
1. Dette er vores applikation, og denne grønne knap føjes til det nederste lag.
2. Når en bruger klikker på en grøn knap fra det første lag, åbnes det andet lag.
3. Når du klikker på den åbne knap i det andet lag, åbnes det tredje lag i JLayeredPane.
4. Når du klikker på den åbne knap i det tredje lag, åbnes det fjerde lag.
5. Når du klikker på den åbne knap i det fjerde lag, åbnes det femte lag.
6. Når du klikker på lukkeknappen i det femte lag, lukkes laget af JLayeredPane.
7. Når du klikker på lukkeknappen i det fjerde lag, lukkes laget af JLayeredPane.
8. Når du klikker på lukkeknappen i det tredje lag, lukkes laget af JLayeredPane.
9. Når du klikker på lukkeknappen i det andet lag, lukkes laget.
Konklusion
JLayeredPane er nem at bruge og en vigtig komponent i Swing. Det gør det nemt at bestemme blandt komponenter, mens situationer overlapper hinanden.
Anbefalede artikler
Dette er en guide til JLayeredPane. Her diskuterer vi lagene, konstruktøren og metoderne i JLayeredPane sammen med eksemplet og dens implementering af kode. Du kan også se på de følgende artikler for at lære mere -
- JFrame i Java
- JComponent i Java
- JCheckBox i Java
- Hvad er JVM?
- Eksempler på afkrydsningsfelt i Bootstrap