JLayeredPane - Guida completa a JLayeredPane con esempi

Sommario:

Anonim

Introduzione a JLayeredPane

JLayeredPane è un componente Swing che ci consente di aggiungere componenti a un livello diverso. Un esempio comune di un "livello diverso" è un JLayeredPane a comparsa. Quando dobbiamo mostrare alcune finestre di dialogo, avvertenze o informazioni, utilizziamo una finestra pop-up. Ciò può essere ottenuto utilizzando JLayeredPane.

Dichiarazione:

public class JLayeredPane extends JComponent implements Accessible

Strati di JLayeredPane

Ecco alcuni strati di JLayeredPane come spiegato di seguito in dettaglio:

  • DEFAULT_LAYER: questo è il livello standard e più in basso, in cui sono inseriti la maggior parte dei componenti.
  • PALETTE_LAYER: questo livello di JLayeredPanesits sul livello predefinito e utile per le barre degli strumenti mobili e le tavolozze.
  • MODAL_LAYER: questo livello di JLayeredPane viene utilizzato per le finestre di dialogo del modello e mostrato sopra il livello della tavolozza.
  • POPUP_LAYER: questo livello di JLayeredPaneis mostrava finestre popup sopra il livello modale.
  • DRAG_LAYER: un componente viene mostrato in questo livello (sopra il livello popup) mentre lo trascini . Al termine del trascinamento, il componente viene mostrato nel suo livello originale.

Dettagli costruttore: questo è l'unico costruttore che crea un JLayeredPane.

public JLayeredPane()

Dettagli del metodo di JLayeredPane

Ecco alcuni metodi che utilizziamo, spiegati di seguito in JLayeredPane:

1. protetto void addImpl (Component comp, Vincoli oggetto, indice int): questo metodo aggiunge un componente a questo contenitore nell'indice specificato. Inoltre, LayoutManager riceve una notifica per aggiungere il componente specificato al layout di questo contenitore usando l'oggetto vincoli specificato. Per questo viene utilizzato il metodo addLayoutComponent.

2. public void remove (int index): questo metodo rimuove un componente dall'indice specificato di questo riquadro.

3. public void removeAll (): rimuove tutti i componenti da questo riquadro.

4. public boolean isOptimizedDrawingEnabled (): se i layer nel riquadro possono sovrapporsi, rende impossibile il disegno ottimizzato e restituisce false. Altrimenti vero.

5. public static void putLayer (JComponent c, int layer): questo metodo imposta il layer per un JComponent. Questo metodo non provoca effetti collaterali come pittura, aggiunta, rimozione, ecc. Per avere questi effetti collaterali, puoi usare il metodo setLayer ().

6. public static int getLayer (JComponent c): questo metodo restituisce l'attributo layer di JComponent specificato.

7. JLayeredPane statico pubblico getLayeredPaneAbove (Componente c): questo metodo restituisce il primo JLayeredPane che contiene il componente specificato o restituisce null se non viene trovato JLayeredPane.

8. public void setLayer (Componente c, int layer): questo metodo imposta l'attributo JLayeredPane del componente specificato. Rende il componente più in basso nel livello specificato.

9. public void setLayer (Componente c, livello int, posizione int): questo metodo imposta l'attributo di livello del componente specificato e imposta la posizione del componente in quel livello.

10. public int getLayer (Componente c): questo metodo restituisce l'attributo layer del Componente specificato.

11. public int getIndexOf (Componente c): questo metodo restituisce l'indice del componente specificato nel riquadro ignorando i livelli. Il componente più in alto è all'indice zero e il componente più in basso è all'indice più alto.

12. public void moveToFront (Componente c): questo metodo sposta il componente specificato all'inizio del livello corrente (posizione 0).

13. public void moveToBack (Componente c): questo metodo sposta il componente specificato nella parte inferiore del layer corrente (posizione -1).

14. public void setPosition (Componente c, posizione int): questo metodo imposta la posizione del componente specificato all'interno del suo livello in cui 0 è la posizione più in alto e –1 è la posizione più in basso.

15. public int getPosition (Componente c): questo metodo restituisce la posizione relativa del componente all'interno del suo livello.

16. public int latestLayer (): questo metodo restituisce il valore del livello più alto da tutti i figli correnti. Se non ci sono bambini, restituisce 0.

17. public int lowerLayer (): questo metodo restituisce il valore del livello più basso da tutti i figli correnti. Se non ci sono bambini, restituisce 0.

18. public int getComponentCountInLayer (int layer): questo metodo restituisce il numero di figli attualmente presenti nel layer specificato.

19. public Component () getComponentsInLayer (int layer): questo metodo restituisce i componenti in un array presente nel layer specificato.

20. public void paint (Grafica g): questo metodo dipinge questo JLayeredPane nel contesto grafico specificato.

21. Hashtable protetto getComponentToLayer (): questo metodo restituisce una tabella hash che associa i componenti ai livelli.

22. protetto Intero getObjectForLayer (int layer): questo metodo restituisce il numero intero associato al layer specificato.

23. protetto int insertIndexForLayer (livello int, posizione int): questo metodo determina e restituisce la posizione corretta per inserire un nuovo figlio in base al livello e alla posizione specificati.

24. Protected String paramString (): questo metodo restituisce la rappresentazione in formato stringa di questo riquadro. Questo metodo viene utilizzato internamente per scopi di debug.

25. public AccessibleContext getAccessibleContext (): questo metodo restituisce AccessibleContext associato a questo riquadro.

Esempio di JLayeredPane

Ecco un esempio di JLayeredPane riportato di seguito con una spiegazione:

Codice:

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

Spiegazione

In questo esempio, abbiamo implementato un programma che mostra diversi livelli di JLayeredPane e come inserire / rimuovere componenti dal riquadro.

  • Innanzitutto, abbiamo creato un frame e aggiunto un JLayeredPane.
  • Quindi aggiunto pulsanti in diversi livelli di JLayeredPane.
  • Ascoltatori di azioni allegati ai pulsanti per mostrare o nascondere il livello successivo.
  • La posizione dei pulsanti con il layer è impostata in modo che appaia correttamente.

Produzione:

1. Questa è la nostra applicazione e questo pulsante verde viene aggiunto al livello più in basso.

2. Quando un utente fa clic su un pulsante verde dal primo livello, viene aperto il secondo livello.

3. Quando si fa clic sul pulsante Apri nel secondo livello, viene aperto il terzo livello in JLayeredPane.

4. Quando si fa clic sul pulsante Apri nel terzo livello, viene aperto il quarto livello.

5. Quando si fa clic sul pulsante Apri nel quarto livello, viene aperto il quinto livello.

6. Quando si fa clic sul pulsante di chiusura nel quinto livello, il livello di JLayeredPane viene chiuso.

7. Quando si fa clic sul pulsante Chiudi nel quarto livello, il livello di JLayeredPane viene chiuso.

8. Quando si fa clic sul pulsante di chiusura nel terzo livello, il livello di JLayeredPane viene chiuso.

9. Quando si fa clic sul pulsante Chiudi nel secondo livello, il livello viene chiuso.

Conclusione

JLayeredPane è facile da usare e un componente importante in Swing. Semplifica la scelta tra i componenti mentre si sovrappongono situazioni.

Articoli consigliati

Questa è una guida a JLayeredPane. Qui discutiamo i livelli, il costruttore e i metodi di JLayeredPane insieme all'esempio e alla sua implementazione del codice. Puoi anche consultare i seguenti articoli per saperne di più -

  1. JFrame in Java
  2. JComponent in Java
  3. JCheckBox in Java
  4. Che cos'è JVM?
  5. Esempi di casella di controllo in Bootstrap