JLayeredPane - Kompletan vodič za JLayeredPane s primjerima

Sadržaj:

Anonim

Uvod u JLayeredPane

JLayeredPane je Swing komponenta koja nam omogućuje dodavanje komponenti u drugi sloj. Uobičajeni primjer "različitog sloja" je skočni JLayeredPane. Kad moramo pokazati neki dijalog, upozorenje ili informacije, koristimo skočni prozor. To se može postići pomoću JLayeredPane.

Deklaracija:

public class JLayeredPane extends JComponent implements Accessible

Slojevi JLayeredPane

Evo nekoliko slojeva JLayeredPane-a kako je dolje detaljno objašnjeno:

  • DEFAULT_LAYER: Ovo je standardni i donji sloj, u koji je umetnuta većina komponenata.
  • PALETTE_LAYER: Ovaj sloj JLayeredPanesits iznad zadanog sloja i koristan je za plutajuće alatne trake i palete.
  • MODAL_LAYER: Ovaj sloj JLayeredPane koristi se za dijaloške okvire modela i prikazuje iznad sloja palete.
  • POPUP_LAYER: Ovaj se sloj JLayeredPaneis koristio za prikazivanje padajućih prozora iznad modalnog sloja.
  • DRAG_LAYER: Komponenta je prikazana u ovom sloju (iznad skočnog sloja) dok ga povlačite. Kada je povlačenje završeno, komponenta je prikazana u svom izvornom sloju.

Pojedinosti o konstruktoru: Ovo je jedini konstruktor koji stvara JLayeredPane.

public JLayeredPane()

Pojedinosti o metodi JLayeredPane

Evo nekih metoda koje koristimo, a koje su objašnjene u JLayeredPane-u:

1. zaštićeni void addImpl (Component comp, Ograničenja objekta, int indeks): Ova metoda dodaje komponentu u ovaj spremnik u navedenom indeksu. Također, obavijesti se LayoutManager da doda navedenu komponentu u izgled ovog spremnika koristeći navedeni objekt ograničenja. Za ovu metodu addLayoutComponent koristi se.

2. uklanjanje javne praznine (int indeks): Ova metoda uklanja komponentu iz specificiranog indeksa ovog okna.

3. public void removeAll (): uklanja sve komponente iz ovog okna.

4. javni boolean isOptimizedDrawingEnabled (): Ako se slojevi u oknu mogu preklapati, optimizirano crtanje je nemoguće i vraća lažno. Inače istina.

5. javna statička praznina putLayer (JComponent c, int sloj): Ova metoda postavlja sloj za JComponent. Ova metoda ne uzrokuje nikakve nuspojave poput boje, dodavanja, uklanjanja itd. Da biste imali ove nuspojave, možete koristiti metodu setLayer ().

6. javni statički int getLayer (JComponent c): Ova metoda vraća atribut sloja određenog JComponenta.

7. javna statička JLayeredPane getLayeredPaneAbove (Komponenta c): Ova metoda vraća prvi JLayeredPane koji sadrži navedenu komponentu ili vraća nulu ako nije pronađen JLayeredPane.

8. javni void setLayer (Komponenta c, int sloj): Ova metoda postavlja atribut JLayeredPane navedene komponente. To čini komponentu najnižu u navedenom sloju.

9. javni void setLayer (Komponenta c, int sloj, int položaj): Ova metoda postavlja atribut sloja navedene komponente i postavlja položaj komponente u tom sloju.

10. javni int getLayer (Komponenta c): Ova metoda vraća atribut sloja navedene komponente.

11. javni int getIndexOf (Komponenta c): Ova metoda vraća indeks specificirane komponente u oknu ignorirajući slojeve. Najviša komponenta je pri indeksu nula, a najniža komponenta pri najvišem indeksu.

12. javni void moveToFront (Komponenta c): Ova metoda pomiče navedenu komponentu na vrh u svom trenutnom sloju (položaj 0).

13. javno void moveToBack (Komponenta c): Ova metoda pomiče navedenu komponentu na dno u svom trenutnom sloju (položaj -1).

14. javna void setPosition (Komponenta c, int položaj): Ova metoda postavlja položaj navedene komponente unutar njenog sloja, pri čemu je 0 najviši položaj, a -1 najniži položaj.

15. javni int getPosition (Komponenta c): Ova metoda vraća relativni položaj komponente unutar njenog sloja.

16. public int highLayer (): Ova metoda vraća vrijednost najvišeg sloja od svih trenutnih djece. Ako nema djece, vraća se 0.

17. javni int Najniži sloj (): Ova metoda vraća vrijednost najnižeg sloja od svih trenutnih djece. Ako nema djece, vraća se 0.

18. javni int getComponentCountInLayer (int sloj): Ova metoda vraća broj djece trenutno prisutne u navedenom sloju.

19. javni Component () getComponentsInLayer (int sloj): Ova metoda vraća komponente u nizu navedenom u specificiranom sloju.

20. javna praznina boja (grafika g): Ova metoda slika ovaj JLayeredPane unutar određenog grafičkog konteksta.

21. zaštićeni Hashtable getComponentToLayer (): Ova metoda vraća HashTable koji komponente sastavlja u slojeve.

22. zaštićeni Integer getObjectForLayer (int sloj): Ova metoda vraća cijeli broj povezan s navedenim slojem.

23. Zaštićeni int insertIndexForLayer (int sloj, int položaj): Ova metoda određuje i vraća pravilno mjesto za umetanje novog djeteta na temelju specificiranog sloja i položaja.

24. zaštićeni string paramString (): Ova metoda vraća nizove ovog okna. Ova metoda se koristi interno za uklanjanje pogrešaka.

25. javni AccessibleContext getAccessibleContext (): Ova metoda vraća AccessibleContext povezan s ovim oknom.

Primjer JLayeredPane-a

Ovdje je primjer JLayeredPane-a dan s objašnjenjem:

Kodirati:

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

Obrazloženje

U ovom primjeru implementirali smo program koji prikazuje različite slojeve JLayeredPane i kako umetnuti / ukloniti komponente iz okna.

  • Prvo smo napravili okvir i dodali mu JLayeredPane.
  • Zatim su dodani gumbi u različitim slojevima JLayeredPane.
  • Priloženi slušatelji radnji na gumbe prikazuju ili skrivaju sljedeći sloj.
  • Položaj tipki sa slojem postavljen je tako da izgleda pravilno.

Izlaz:

1. Ovo je naša aplikacija i ovaj zeleni gumb dodan je u donji sloj.

2. Kada korisnik klikne na zeleni gumb iz prvog sloja, otvara se drugi sloj.

3. Kada se klikne gumb za otvaranje u drugom sloju, otvori se treći sloj u JLayeredPane.

4. Kada se u trećem sloju klikne gumb otvoreni otvori se četvrti sloj.

5. Kada se u četvrtom sloju klikne otvoreni gumb, otvara se peti sloj.

6. Kada se klikne gumb za zatvaranje u petom sloju, sloj JLayeredPane se zatvori.

7. Kada se u četvrtom sloju klikne gumb za zatvaranje, sloj JLayeredPane se zatvara.

8. Kada se u trećem sloju klikne gumb za zatvaranje, sloj JLayeredPane se zatvara.

9. Kada se u drugom sloju klikne gumb za zatvaranje, taj se sloj zatvori.

Zaključak

JLayeredPane je jednostavan za korištenje i važna je komponenta u Swingu. Omogućuje lako odlučivanje među komponentama i preklapajuće se situacije.

Preporučeni članci

Ovo je vodič za JLayeredPane. Ovdje raspravljamo o slojevima, konstruktoru i metodama JLayeredPane zajedno s primjerom i njegovom implementacijom koda. Možete pogledati i sljedeće članke da biste saznali više -

  1. JFrame u Javi
  2. JComponent u Javi
  3. JCheckBox na Javi
  4. Što je JVM?
  5. Primjeri potvrdnog okvira u Bootstrapu