Einführung in JLayeredPane
JLayeredPane ist eine Swing-Komponente, mit der wir einer anderen Ebene Komponenten hinzufügen können. Ein häufiges Beispiel für eine "andere Ebene" ist ein Popup-Fenster "JLayeredPane". Wenn wir Dialoge, Warnungen oder Informationen anzeigen müssen, verwenden wir ein Popup-Fenster. Dies kann mit JLayeredPane erreicht werden.
Erklärung:
public class JLayeredPane extends JComponent implements Accessible
Ebenen von JLayeredPane
Hier sind einige Ebenen von JLayeredPane, wie nachstehend ausführlich erläutert:
- DEFAULT_LAYER: Dies ist die Standard- und unterste Ebene, in die die meisten Komponenten eingefügt werden.
- PALETTE_LAYER: Diese Ebene von JLayeredPanes liegt über der Standardebene und ist nützlich für schwebende Symbolleisten und Paletten.
- MODAL_LAYER: Diese Ebene von JLayeredPane wird für Modelldialoge verwendet und über der Palettenebene angezeigt.
- POPUP_LAYER: Diese Ebene von JLayeredPaneis verwendet, um Popup-Fenster über der modalen Ebene anzuzeigen.
- DRAG_LAYER: Eine Komponente wird in dieser Ebene (über der Popup-Ebene) angezeigt, während Sie sie ziehen. Wenn das Ziehen beendet ist, wird die Komponente in ihrer ursprünglichen Ebene angezeigt.
Konstruktordetails: Dies ist der einzige Konstruktor, der ein JLayeredPane erstellt.
public JLayeredPane()
Methodendetails von JLayeredPane
Im Folgenden werden einige Methoden erläutert, die wir in JLayeredPane verwenden:
1. protected void addImpl (Komponentenkomponente, Objekteinschränkungen, int-Index): Diese Methode fügt diesem Container am angegebenen Index eine Komponente hinzu. Außerdem wird LayoutManager aufgefordert, die angegebene Komponente mithilfe des angegebenen Einschränkungsobjekts zum Layout dieses Containers hinzuzufügen. Für diese Methode wird die Methode addLayoutComponent verwendet.
2. public void remove (int index): Diese Methode entfernt eine Komponente aus dem angegebenen Index dieses Bereichs.
3. public void removeAll (): Entfernt alle Komponenten aus diesem Bereich.
4. public boolean isOptimizedDrawingEnabled (): Wenn sich Ebenen im Bereich überlappen können, wird das optimierte Zeichnen unmöglich und es wird false zurückgegeben. Ansonsten wahr.
5. public static void putLayer (JComponent c, int layer): Diese Methode legt den Layer für eine JComponent fest. Diese Methode verursacht keine Nebenwirkungen wie Malen, Hinzufügen, Entfernen usw. Um diese Nebenwirkungen zu vermeiden, können Sie die setLayer () -Methode verwenden.
6. public static int getLayer (JComponent c): Diese Methode gibt das Layer-Attribut der angegebenen JComponent zurück.
7. public static JLayeredPane getLayeredPaneAbove (Component c): Diese Methode gibt das erste JLayeredPane zurück, das die angegebene Komponente enthält, oder gibt null zurück, wenn kein JLayeredPane gefunden wird.
8. public void setLayer (Component c, int layer): Diese Methode legt das JLayeredPane-Attribut der angegebenen Komponente fest. Dadurch wird die Komponente in der angegebenen Ebene ganz unten angezeigt.
9. public void setLayer (Komponente c, int layer, int position): Diese Methode legt das Layer-Attribut der angegebenen Komponente und die Position der Komponente in dieser Ebene fest.
10. public int getLayer (Component c): Diese Methode gibt das Layer-Attribut der angegebenen Component zurück.
11. public int getIndexOf (Component c): Diese Methode gibt den Index der angegebenen Komponente im Bereich zurück, wobei die Ebenen ignoriert werden. Die oberste Komponente befindet sich am Index Null, und die unterste Komponente befindet sich am höchsten Index.
12. public void moveToFront (Komponente c): Diese Methode verschiebt die angegebene Komponente in ihrer aktuellen Ebene (Position 0) nach oben.
13. public void moveToBack (Komponente c): Diese Methode verschiebt die angegebene Komponente in ihrer aktuellen Ebene (Position -1) nach unten.
14. public void setPosition (Komponente c, int position): Diese Methode legt die Position der angegebenen Komponente innerhalb ihrer Ebene fest, wobei 0 die oberste und –1 die unterste Position ist.
15. public int getPosition (Component c): Diese Methode gibt die relative Position der Komponente innerhalb ihres Layers zurück.
16. public int highestLayer (): Diese Methode gibt den Wert der höchsten Ebene aller aktuellen untergeordneten Elemente zurück. Wenn keine Kinder vorhanden sind, wird 0 zurückgegeben.
17. public int leastLayer (): Diese Methode gibt den Wert der untersten Ebene aller aktuellen untergeordneten Ebenen zurück. Wenn keine Kinder vorhanden sind, wird 0 zurückgegeben.
18. public int getComponentCountInLayer (int layer): Diese Methode gibt die Anzahl der aktuell in der angegebenen Ebene vorhandenen untergeordneten Elemente zurück.
19. public Component () getComponentsInLayer (int layer): Diese Methode gibt die Komponenten in einem Array zurück, das in der angegebenen Ebene vorhanden ist.
20. public void paint (Graphics g): Diese Methode zeichnet dieses JLayeredPane im angegebenen Grafikkontext.
21. protected Hashtable getComponentToLayer (): Diese Methode gibt eine HashTable zurück, die Komponenten Layern zuordnet.
22. protected Integer getObjectForLayer (int layer): Diese Methode gibt die der angegebenen Ebene zugeordnete Ganzzahl zurück.
23. protected int insertIndexForLayer (int layer, int position): Diese Methode ermittelt anhand der angegebenen Ebene und Position die richtige Position zum Einfügen eines neuen untergeordneten Elements und gibt sie zurück.
24. protected String paramString (): Diese Methode gibt die Zeichenfolgendarstellung dieses Bereichs zurück. Diese Methode wird intern zu Debugging-Zwecken verwendet.
25. public AccessibleContext getAccessibleContext (): Diese Methode gibt den AccessibleContext zurück, der diesem Bereich zugeordnet ist.
Beispiel für JLayeredPane
Nachfolgend finden Sie ein Beispiel für JLayeredPane mit Erläuterungen:
Code:
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);
));
)
)
Erläuterung
In diesem Beispiel haben wir ein Programm implementiert, das verschiedene Ebenen von JLayeredPane und das Einfügen / Entfernen von Komponenten aus dem Bereich zeigt.
- Zunächst haben wir einen Frame erstellt und einen JLayeredPane hinzugefügt.
- Anschließend wurden Schaltflächen in verschiedenen Ebenen des JLayeredPane hinzugefügt.
- Angehängte Aktionen hören auf die Schaltflächen, um die nächste Ebene anzuzeigen oder auszublenden.
- Die Position der Schaltflächen mit der Ebene ist so festgelegt, dass sie richtig aussieht.
Ausgabe:
1. Dies ist unsere Anwendung und diese grüne Schaltfläche wird der untersten Ebene hinzugefügt.
2. Wenn ein Benutzer in der ersten Ebene auf eine grüne Schaltfläche klickt, wird die zweite Ebene geöffnet.
3. Wenn Sie in der zweiten Ebene auf die Schaltfläche Öffnen klicken, wird die dritte Ebene in JLayeredPane geöffnet.
4. Wenn Sie in der dritten Ebene auf die Schaltfläche Öffnen klicken, wird die vierte Ebene geöffnet.
5. Wenn Sie in der vierten Ebene auf die Schaltfläche Öffnen klicken, wird die fünfte Ebene geöffnet.
6. Wenn Sie in der fünften Ebene auf die Schaltfläche Schließen klicken, wird die Ebene von JLayeredPane geschlossen.
7. Wenn Sie in der vierten Ebene auf die Schaltfläche Schließen klicken, wird die Ebene von JLayeredPane geschlossen.
8. Wenn Sie auf die Schließen-Schaltfläche in der dritten Ebene klicken, wird die Ebene von JLayeredPane geschlossen.
9. Wenn Sie in der zweiten Ebene auf die Schaltfläche Schließen klicken, wird die Ebene geschlossen.
Fazit
JLayeredPane ist einfach zu bedienen und eine wichtige Komponente in Swing. Dies erleichtert die Entscheidung zwischen Komponenten in überlappenden Situationen.
Empfohlene Artikel
Dies ist eine Anleitung zu JLayeredPane. Hier werden die Ebenen, der Konstruktor und die Methoden von JLayeredPane zusammen mit dem Beispiel und der Codeimplementierung erläutert. Sie können sich auch die folgenden Artikel ansehen, um mehr zu erfahren -
- JFrame in Java
- JComponent in Java
- JCheckBox in Java
- Was ist JVM?
- Beispiele für Checkbox in Bootstrap