Wprowadzenie do JLayeredPane
JLayeredPane to komponent Swing, który pozwala nam dodawać komponenty do innej warstwy. Typowym przykładem „innej warstwy” jest pop-up JLayeredPane. Kiedy musimy pokazać jakieś okno dialogowe, ostrzeżenie lub informacje, używamy wyskakującego okna. Można to osiągnąć za pomocą JLayeredPane.
Deklaracja:
public class JLayeredPane extends JComponent implements Accessible
Warstwy JLayeredPane
Oto kilka warstw JLayeredPane, jak wyjaśniono szczegółowo poniżej:
- DEFAULT_LAYER: Jest to standardowa i najniższa warstwa, w której wstawianych jest większość komponentów.
- PALETTE_LAYER: Ta warstwa JLayeredPanesits nad warstwą domyślną i przydatna do unoszących się pasków narzędzi i palet.
- MODAL_LAYER: Ta warstwa JLayeredPane jest używana w oknach dialogowych modelu i wyświetlana nad warstwą palety.
- POPUP_LAYER: Ta warstwa JLayeredPaneis służyła do wyświetlania okien wyskakujących nad warstwą modalną.
- DRAG_LAYER: Podczas przeciągania wyświetlany jest komponent w tej warstwie (powyżej warstwy wyskakującej). Po zakończeniu przeciągania komponent jest wyświetlany w oryginalnej warstwie.
Szczegóły konstruktora: Jest to jedyny konstruktor, który tworzy JLayeredPane.
public JLayeredPane()
Szczegóły metody JLayeredPane
Oto niektóre metody, których używamy, wyjaśnione poniżej w JLayeredPane:
1. chroniony void addImpl (Komponent komponentu, Ograniczenia obiektu, indeks wewnętrzny): Ta metoda dodaje komponent do tego kontenera pod określonym indeksem. Ponadto LayoutManager jest powiadamiany o dodaniu określonego komponentu do układu tego kontenera za pomocą określonego obiektu ograniczeń. W tym celu zastosowano metodę addLayoutComponent.
2. public void remove (int index): Ta metoda usuwa komponent z określonego indeksu tego panelu.
3. public void removeAll (): Usuwa wszystkie komponenty z tego panelu.
4. public boolean isOptimizedDrawingEnabled (): Jeśli warstwy w panelu mogą się nakładać, uniemożliwia zoptymalizowany rysunek i zwraca wartość false. W przeciwnym razie prawda.
5. public static void putLayer (JComponent c, warstwa wewnętrzna): Ta metoda ustawia warstwę dla JComponent. Ta metoda nie powoduje żadnych skutków ubocznych, takich jak malowanie, dodawanie, usuwanie itp. Aby uzyskać te efekty uboczne, można użyć metody setLayer ().
6. public static int getLayer (JComponent c): Ta metoda zwraca atrybut warstwy określonego JComponent.
7. public static JLayeredPane getLayeredPaneAbove (składnik c): Ta metoda zwraca pierwszy JLayeredPane, który zawiera określony składnik lub zwraca null, jeśli JLayeredPane nie zostanie znaleziony.
8. public void setLayer (Component c, int layer): Ta metoda ustawia atrybut JLayeredPane określonego komponentu. Sprawia, że komponent jest najniżej w określonej warstwie.
9. public void setLayer (Komponent c, warstwa int, int pozycja): Ta metoda ustawia atrybut warstwy określonego komponentu i ustawia pozycję komponentu na tej warstwie.
10. public int getLayer (Component c): Ta metoda zwraca atrybut warstwy określonego Component.
11. public int getIndexOf (Component c): Ta metoda zwraca indeks określonego komponentu w panelu ignorując warstwy. Najwyższy składnik ma indeks zero, a najniższy składnik ma najwyższy wskaźnik.
12. public void moveToFront (Komponent c): Ta metoda przenosi określony komponent na szczyt w jego bieżącej warstwie (pozycja 0).
13. public void moveToBack (Komponent c): Ta metoda przenosi określony komponent na dół w jego bieżącej warstwie (pozycja -1).
14. public void setPosition (Component c, int position): Ta metoda ustawia pozycję określonego komponentu w swojej warstwie, gdzie 0 to najwyższa pozycja, a –1 to najniższa pozycja.
15. public int getPosition (Component c): Ta metoda zwraca względną pozycję komponentu w jego warstwie.
16. public int najwyższa warstwa (): Ta metoda zwraca wartość najwyższej warstwy ze wszystkich bieżących elementów potomnych. Jeśli nie ma dzieci, zwraca 0.
17. public int lowerLayer (): Ta metoda zwraca wartość najniższej warstwy ze wszystkich bieżących elementów potomnych. Jeśli nie ma dzieci, zwraca 0.
18. public int getComponentCountInLayer (int layer): Ta metoda zwraca liczbę dzieci aktualnie obecnych w określonej warstwie.
19. public Component () getComponentsInLayer (int layer): Ta metoda zwraca komponenty w tablicy znajdującej się w określonej warstwie.
20. public void paint (Graphics g): Ta metoda maluje tę JLayeredPane w określonym kontekście graficznym.
21. chroniony Hashtable getComponentToLayer (): Ta metoda zwraca HashTable, która mapuje komponenty na warstwy.
22. protected Integer getObjectForLayer (int layer): Ta metoda zwraca liczbę całkowitą związaną z określoną warstwą.
23. protected int insertIndexForLayer (warstwa wewnętrzna, pozycja wewnętrzna): Ta metoda określa i zwraca właściwe położenie do wstawienia nowego elementu potomnego na podstawie określonej warstwy i pozycji.
24. chroniony ciąg paramString (): Ta metoda zwraca ciąg reprezentujący ten panel. Ta metoda jest używana wewnętrznie do celów debugowania.
25. public AccessibleContext getAccessibleContext (): Ta metoda zwraca AccessibleContext skojarzony z tym panelem.
Przykład JLayeredPane
Oto przykład JLayeredPane podany poniżej z wyjaśnieniem:
Kod:
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);
));
)
)
Wyjaśnienie
W tym przykładzie zaimplementowaliśmy program, który pokazuje różne warstwy JLayeredPane i jak wstawiać / usuwać komponenty z panelu.
- Najpierw stworzyliśmy ramkę i dodaliśmy do niej JLayeredPane.
- Następnie dodano przyciski w różnych warstwach JLayeredPane.
- Dołączone detektory akcji do przycisków, aby wyświetlić lub ukryć następną warstwę.
- Położenie przycisków z warstwą jest ustawione tak, aby wyglądało poprawnie.
Wynik:
1. To jest nasza aplikacja i ten zielony przycisk został dodany do najniższej warstwy.
2. Gdy użytkownik kliknie zielony przycisk z pierwszej warstwy, druga warstwa zostanie otwarta.
3. Po kliknięciu przycisku Otwórz w drugiej warstwie otwiera się trzecia warstwa w JLayeredPane.
4. Po kliknięciu przycisku Otwórz na trzeciej warstwie otwiera się czwarta warstwa.
5. Po kliknięciu przycisku Otwórz na czwartej warstwie otwiera się piąta warstwa.
6. Po kliknięciu przycisku zamykania na piątej warstwie warstwa JLayeredPane zostaje zamknięta.
7. Po kliknięciu przycisku zamykania na czwartej warstwie warstwa JLayeredPane zostaje zamknięta.
8. Po kliknięciu przycisku zamykania w trzeciej warstwie warstwa JLayeredPane zostaje zamknięta.
9. Po kliknięciu przycisku zamykania w drugiej warstwie warstwa zostaje zamknięta.
Wniosek
JLayeredPane jest łatwy w użyciu i ważnym składnikiem Swing. Ułatwia wybór między komponentami podczas nakładających się sytuacji.
Polecane artykuły
To jest przewodnik po JLayeredPane. Tutaj omawiamy warstwy, konstruktor i metody JLayeredPane wraz z przykładem i jego implementacją kodu. Możesz także przejrzeć następujące artykuły, aby dowiedzieć się więcej -
- JFrame w Javie
- JComponent w Javie
- JCheckBox w Javie
- Co to jest JVM?
- Przykłady pola wyboru w Bootstrap