Uvod v JLayeredPane
JLayeredPane je komponenta Swing, ki nam omogoča dodajanje komponent v drugačen sloj. Pogost primer "drugačne plasti" je pojavno okno JLayeredPane. Ko moramo pokazati neko pogovorno okno, opozorilo ali informacije, uporabimo pojavno okno. To lahko dosežete z uporabo JLayeredPane.
Izjava:
public class JLayeredPane extends JComponent implements Accessible
Sloji JLayeredPane
Tu je nekaj slojev JLayeredPane, kot je podrobno pojasnjeno spodaj:
- DEFAULT_LAYER: To je standardni in spodnji sloj, kamor je vstavljena večina komponent.
- PALETTE_LAYER: Ta plast JLayeredPanesits nad privzeto plastjo in uporabna za plavajoče orodne vrstice in palete.
- MODAL_LAYER: Ta plast JLayeredPane se uporablja za dialoge modelov in je prikazana nad slojem palete.
- POPUP_LAYER: Ta plast JLayeredPaneis se uporablja za prikazovanje pojavnih oken nad modalno plastjo.
- DRAG_LAYER: Komponenta je prikazana v tej plasti (nad pojavnim slojem), medtem ko jo povlečete. Ko je vlečenje končano, se komponenta prikaže v izvirnem sloju.
Podrobnosti o konstruktorju: To je edini konstruktor, ki ustvari JLayeredPane.
public JLayeredPane()
Podrobnosti o metodi JLayeredPane
Tukaj je nekaj načinov, ki jih uporabljamo, in je pojasnjeno spodaj v JLayeredPane:
1. zaščiten void addImpl (Component comp, Object con ограниints, int index): Ta metoda doda komponento v ta vsebnik v podanem indeksu. Prav tako je LayoutManager obveščen, da doda dodano komponento v postavitev tega vsebnika s pomočjo podanega predmeta omejitev. Za to se uporablja metoda addLayoutComponent.
2. javno neveljavno odstranjevanje (int indeks): Ta metoda odstrani komponento iz podanega indeksa tega podokna.
3. public void removeAll (): odstrani vse komponente iz tega podokna.
4. javni boolean isOptimizedDrawingEnabled (): Če se plasti v podoknu lahko prekrivajo, onemogoči risanje nemogoče in vrne napačno. Sicer res.
5. javni statični void putLayer (JComponent c, int plast): Ta metoda nastavi plast za JComponent. Ta metoda ne povzroča nobenih stranskih učinkov, kot so barva, dodajanje, odstranjevanje itd. Če želite te neželene učinke, lahko uporabite metodo setLayer ().
6. javni statični int getLayer (JComponent c): Ta metoda vrne atribut plasti določenega JComponenta.
7. javna statična JLayeredPane getLayeredPaneAbove (komponenta c): Ta metoda vrne prvo JLayeredPane, ki vsebuje določeno komponento ali vrne ničelno, če ni najdeno JLayeredPane.
8. javni void setLayer (komponenta c, int plast): Ta metoda nastavi atribut JLayeredPane podane komponente. Sestavni del naredi najnižje v določeni plasti.
9. javni void setLayer (komponenta c, int plast, int položaj): Ta metoda nastavi atribut plasti določene komponente in nastavi položaj komponente v tej plasti.
10. javni int getLayer (komponenta c): Ta metoda vrne atribut plasti določene komponente.
11. javni int getIndexOf (komponenta c): Ta metoda vrne indeks podane komponente v podoknu, pri čemer ignorira plasti. Zgornja komponenta je pri indeksu nič, spodnja pa pri najvišjem.
12. javno neveljavno gibanjeToFront (komponenta c): Ta metoda premakne določeno komponento na vrh v njeni trenutni plasti (položaj 0).
13. javni void moveToBack (komponenta c): Ta metoda premakne določeno komponento na dno v trenutni plasti (položaj -1).
14. javna void setPosition (komponenta c, int položaj): Ta metoda nastavi položaj določene komponente znotraj njene plasti, kjer je 0 najbolj zgornji položaj in –1 je položaj, ki je najbolj spodnji.
15. javni int getPosition (komponenta c): Ta metoda vrne relativni položaj komponente znotraj njene plasti.
16. public int highLayer (): Ta metoda vrne vrednost najvišjega sloja od vseh trenutnih otrok. Če ni otrok, vrne 0.
17. javni int Najnižja plast (): Ta metoda vrne vrednost najnižjega sloja od vseh trenutnih otrok. Če ni otrok, vrne 0.
18. javni int getComponentCountInLayer (int plast): Ta metoda vrne število otrok, trenutno prisotnih v podani plasti.
19. javni Component () getComponentsInLayer (int plast): Ta metoda vrne sestavne dele v polju, ki je prisoten v podani plasti.
20. javna neveljavna barva (grafika g): Ta metoda naslika to JLayeredPane v določenem grafičnem kontekstu.
21. zaščiten Hashtable getComponentToLayer (): Ta metoda vrne HashTable, ki komponente preslika na plasti.
22. zaščiten Integer getObjectForLayer (int plast): Ta metoda vrne celo število, povezano z navedenim slojem.
23. zaščiten int insertIndexForLayer (int plast, int položaj): Ta metoda določi in vrne pravilno lokacijo za vstavljanje novega podrejenega na podlagi določenih plasti in položaja.
24. zaščiteni niz paramString (): Ta metoda vrne niz vrstic v tem podoknu. Ta metoda se uporablja interno za namene odpravljanja napak.
25. javni AccessibleContext getAccessibleContext (): Ta metoda vrne AccessibleContext, povezan s tem podoknom.
Primer JLayeredPane
Spodaj je primer JLayeredPane z obrazložitvijo:
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);
));
)
)
Pojasnilo
V tem primeru smo implementirali program, ki prikazuje različne plasti JLayeredPane in kako vstaviti / odstraniti komponente iz podokna.
- Najprej smo ustvarili okvir in vanj dodali JLayeredPane.
- Nato dodamo gumbe v različnih plasteh JLayeredPane.
- Na gumbe priloženi poslušalci dejanj prikažejo ali skrijejo naslednji sloj.
- Položaj gumbov s plastjo je nastavljen tako, da izgleda pravilno.
Izhod:
1. To je naša aplikacija in ta zeleni gumb je dodan v spodnji sloj.
2. Ko uporabnik s prvega sloja klikne zeleni gumb, se odpre drugi sloj.
3. S klikom na gumb za odpiranje v drugem sloju se odpre tretja plast v JLayeredPane.
4. Ko se v tretjem sloju klikne gumb za odpiranje, se odpre četrta plast.
5. Ko se v četrtem sloju klikne gumb za odpiranje, se odpre peta plast.
6. Ko kliknete gumb za zapiranje v peti plasti, se plast JLayeredPane zapre.
7. S klikom na gumb za zapiranje v četrtem sloju se plast JLayeredPane zapre.
8. S klikom na gumb za zapiranje v tretjem sloju se plast JLayeredPane zapre.
9. S klikom na gumb za zapiranje v drugem sloju se plast zapre.
Zaključek
JLayeredPane je enostaven za uporabo in je pomemben sestavni del Swinga. Omogoča enostavno odločanje med komponentami, medtem ko se prekrivajo situacije.
Priporočeni članki
To je vodnik za JLayeredPane. Tukaj razpravljamo o plasteh, konstruktorju in metodah JLayeredPane skupaj s primerom in njegovo implementacijo kode. Če želite izvedeti več, si oglejte tudi naslednje članke -
- JFrame v Javi
- JComponent v Javi
- JCheckBox v Javi
- Kaj je JVM?
- Primeri potrditvenega polja v programu Bootstrap