JLayeredPane - Täydellinen opas JLayeredPane-sovellukseen esimerkkeinä

Sisällysluettelo:

Anonim

Johdanto JLayeredPane-ohjelmaan

JLayeredPane on Swing-komponentti, jonka avulla voimme lisätä komponentteja eri tasoon. Yleinen esimerkki ”eri kerroksesta” on ponnahdusikkuna JLayeredPane. Kun meidän on näytettävä jokin valintaikkuna, varoitus tai tieto, käytämme ponnahdusikkunaa. Tämä voidaan saavuttaa käyttämällä JLayeredPane.

ilmoitus:

public class JLayeredPane extends JComponent implements Accessible

JLayeredPane-kerrokset

Tässä on joitain JLayeredPane-kerroksia, kuten alla selitetään yksityiskohtaisesti:

  • DEFAULT_LAYER: Tämä on vakio ja alin kerros, johon suurin osa komponentteja asetetaan.
  • PALETTE_LAYER: Tämä JLayeredPanesits- kerros on oletuskerroksen yläpuolella ja hyödyllinen kelluvilla työkaluriveillä ja paleteilla.
  • MODAL_LAYER: Tätä JLayeredPane- kerrosta käytetään mallin valintaikkunoissa ja se näkyy palettikerroksen yläpuolella.
  • POPUP_LAYER: Tämä JLayeredPaneis- kerros näytti ponnahdusikkunoita modaalikerroksen yläpuolella.
  • DRAG_LAYER: Komponentti näkyy tässä kerroksessa (ponnahdusikkunan yläpuolella) vetämällä sitä. Kun vetäminen on valmis, komponentti näytetään alkuperäisessä kerroksessa.

Rakentajan yksityiskohdat: Tämä on ainoa rakentaja, joka luo JLayeredPane.

public JLayeredPane()

Menetelmän yksityiskohdat JLayeredPane

Tässä on joitain käyttämiämme menetelmiä, selitetään alla JLayeredPane-julkaisussa:

1. suojattu tyhjä addImpl (Komponenttikomponentti, Objektirajoitukset, int-hakemisto): Tämä menetelmä lisää komponentin tähän säilöön määritettyyn hakemistoon. Lisäksi LayoutManagerille ilmoitetaan lisättävä määritetty komponentti tämän säilöasettelun asetteluun käyttämällä määritettyjä rajoitusobjekteja. Tätä addLayoutComponent-menetelmää käytetään.

2. public void remove (int-hakemisto): Tämä menetelmä poistaa komponentin tämän paneelin määritetystä hakemistosta.

3. public void removeAll (): Poistaa kaikki osat tästä ruudusta.

4. julkinen boolean isOptimizedDrawingEnabled (): Jos paneelin tasot voivat olla päällekkäisiä, se tekee optimoidusta piirtämisestä mahdotonta ja palauttaa väärät. Muuten totta.

5. julkinen staattinen void putLayer (JComponent c, int kerros): Tämä menetelmä asettaa kerroksen JComponentille. Tämä menetelmä ei aiheuta sivuvaikutuksia, kuten maali, lisää, poista jne. Saadaksesi nämä sivuvaikutukset voit käyttää setLayer () -menetelmää.

6. julkinen staattinen int getLayer (JComponent c): Tämä menetelmä palauttaa määritetyn JComponent-tason määritteen.

7. julkinen staattinen JLayeredPane getLayeredPaneAbove (komponentti c): Tämä menetelmä palauttaa ensimmäisen JLayeredPane-tiedoston, joka sisältää määritetyn komponentin, tai palauttaa arvon nollaksi, jos JLayeredPane-tiedostoa ei löydy.

8. public void setLayer (komponentti c, int-kerros): Tämä menetelmä asettaa määritetyn komponentin JLayeredPane-määrite. Se tekee komponentista alimmassa määritellyssä kerroksessa.

9. public void setLayer (komponentti c, int-kerros, int-sijainti): Tämä menetelmä asettaa määritetyn komponentin tasomääritteen ja asettaa komponentin sijainnin kyseisessä kerroksessa.

10. public int getLayer (komponentti c): Tämä menetelmä palauttaa määritetyn komponentin tasomääritteen .

11. public int getIndexOf (komponentti c): Tämä menetelmä palauttaa ruudussa määritetyn komponentin hakemiston sivuuttamatta tasot. Ylin komponentti on nolla-indeksissä ja alhaisin komponentti on korkeimmassa indeksissä.

12. public void moveToFront (komponentti c): Tämä menetelmä siirtää määritetyn komponentin nykyisen kerroksensa yläosaan (sijainti 0).

13. public void moveToBack (komponentti c): Tämä menetelmä siirtää määritetyn komponentin nykyisen kerroksensa alaosaan (sijainti -1).

14. public void setPosition (komponentti c, int-asema): Tämä menetelmä asettaa määritetyn komponentin sijainnin kerroksessaan, jossa 0 on ylin sijainti ja –1 on alhaisimman aseman.

15. public int getPosition (komponentti c): Tämä menetelmä palauttaa komponentin suhteellisen sijainnin kerroksessaan.

16. public int korkein kerros (): Tämä menetelmä palauttaa kaikkien nykyisten lasten korkeimman kerroksen arvon. Jos lapsia ei ole, se palauttaa arvon 0.

17. public int lowLayer (): Tämä menetelmä palauttaa kaikkien nykyisten lasten alimman kerroksen arvon. Jos lapsia ei ole, se palauttaa arvon 0.

18. public int getComponentCountInLayer (int-kerros): Tämä menetelmä palauttaa määritettyyn tasoon tällä hetkellä kuuluvien lasten määrän.

19. public Component () getComponentsInLayer (int kerros): Tämä menetelmä palauttaa komponentit taulukossa olevassa taulukossa, joka on määritellyssä kerroksessa.

20. julkinen tyhjä maali (grafiikka g): Tämä menetelmä maalaa tämän JLayeredPane-laitteen määritettyyn grafiikkayhteyteen.

21. suojattu Hashtable getComponentToLayer (): Tämä menetelmä palauttaa HashTable-sovelluksen, joka kartoittaa komponentit kerroksiin.

22. suojattu kokonaisluku getObjectForLayer (int-kerros): Tämä menetelmä palauttaa määritettyyn kerrokseen liittyvän kokonaisluvun.

23. suojattu int insertIndexForLayer (int-kerros, int-sijainti): Tämä menetelmä määrittää ja palauttaa oikean paikan uuden lapsen lisäämiseksi määritetyn tason ja sijainnin perusteella.

24. suojattu merkkijono paramString (): Tämä menetelmä palauttaa tämän ruudun merkkijonon. Tätä menetelmää käytetään sisäisesti virheenkorjaustarkoituksiin.

25. public AccessibleContext getAccessibleContext (): Tämä menetelmä palauttaa tähän ruutuun liittyvän AccessibleContext-tiedoston.

Esimerkki JLayeredPane

Tässä on esimerkki alla olevasta JLayeredPane-selityksestä:

Koodi:

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

Selitys

Tässä esimerkissä olemme toteuttaneet ohjelman, joka näyttää eri JLayeredPane-kerrokset ja kuinka komponentit voidaan lisätä / poistaa paneelista.

  • Ensinnäkin, olemme luoneet kehyksen ja lisänneet siihen JLayeredPane.
  • Sitten lisättiin painikkeet JLayeredPanen eri kerroksiin.
  • Liitetty toimintokuuntelijat painikkeisiin seuraavan tason näyttämiseksi tai piilottamiseksi.
  • Painikkeiden sijainti tason kanssa on asetettu niin, että se näyttää oikein.

lähtö:

1. Tämä on sovelluksemme ja tämä vihreä painike lisätään alakerrokseen.

2. Kun käyttäjä napsauttaa vihreää painiketta ensimmäisestä kerroksesta, toinen kerros avataan.

3. Kun napsautetaan toisen kerroksen Avaa-painiketta, JLayeredPane -sovelluksen kolmas kerros avataan.

4. Kun napsautetaan kolmannen kerroksen Avaa-painiketta, neljäs kerros avataan.

5. Kun napsautetaan neljännen kerroksen Avaa-painiketta, viides kerros avataan.

6. Napsauttamalla viidennen kerroksen sulkemispainiketta, JLayeredPane-kerros suljetaan.

7. Napsauttamalla neljännen kerroksen sulkemispainiketta, JLayeredPane-kerros suljetaan.

8. Kun napsautetaan sulje-painiketta kolmannessa kerroksessa, JLayeredPane-kerros suljetaan.

9. Kun napsautetaan toisen kerroksen sulkemispainiketta, kerros suljetaan.

johtopäätös

JLayeredPane on helppo käyttää ja tärkeä komponentti Swingissa. Sen avulla komponenttien välillä on helppo päättää päällekkäin tilanteissa.

Suositellut artikkelit

Tämä on opas JLayeredPane-ohjelmaan. Tässä keskustellaan JLayeredPanen kerroksista, rakentajasta ja menetelmistä sekä esimerkistä ja sen koodin toteutuksesta. Voit myös katsoa seuraavia artikkeleita saadaksesi lisätietoja -

  1. JFrame Java
  2. JComponent Java
  3. JCheckBox Java
  4. Mikä on JVM?
  5. Esimerkkejä Bootstrap-valintaruudusta