Вступ до JLayeredPane
JLayeredPane - компонент Swing, який дозволяє нам додавати компоненти до іншого шару. Поширений приклад "іншого шару" - це спливаюче вікно JLayeredPane. Коли ми маємо показати якийсь діалог, попередження чи інформацію, ми використовуємо спливаюче вікно. Цього можна досягти, використовуючи JLayeredPane.
Декларація:
public class JLayeredPane extends JComponent implements Accessible
Шари JLayeredPane
Ось кілька шарів JLayeredPane, як детально пояснено нижче:
- DEFAULT_LAYER: Це стандартний і нижній шар, куди вставлено більшість компонентів.
- PALETTE_LAYER: Цей шар JLayeredPanesits над шаром за замовчуванням і корисний для плаваючих панелей інструментів і палітри.
- MODAL_LAYER: Цей шар JLayeredPane використовується для діалогів моделі та показаний над шаром палітри.
- POPUP_LAYER: Цей шар JLayeredPaneis використовується для показу спливаючих вікон над модальним шаром.
- DRAG_LAYER: Компонент відображається в цьому шарі (над спливаючим шаром) під час перетягування. Коли перетягування закінчено, компонент відображається у своєму початковому шарі.
Деталі про конструктор: Це єдиний конструктор, який створює JLayeredPane.
public JLayeredPane()
Деталі методу JLayeredPane
Ось деякі методи, які ми використовуємо, пояснені нижче в JLayeredPane:
1. Захищений недійсний addImpl (Component comp, Об'єктні обмеження, int index): Цей метод додає компонент до цього контейнера у вказаному індексі. Також LayoutManager повідомляється про те, щоб додати вказаний компонент до макета цього контейнера, використовуючи вказаний об'єкт обмежень. Для цього використовується метод addLayoutComponent.
2. public void remove (int index): Цей метод видаляє компонент із зазначеного індексу цієї області.
3. public void removeAll (): видаляє всі компоненти з цієї області.
4. public boolean isOptimizedDrawingEnabled (): Якщо шари на панелі можуть перекриватися, це робить оптимізований малюнок неможливим і повертає помилковим. Інакше правда.
5. загальнодоступна статична порожнеча putLayer (JComponent c, int-шар): Цей метод встановлює шар для JComponent. Цей метод не викликає таких побічних ефектів, як фарба, додавання, видалення тощо. Щоб мати ці побічні ефекти, ви можете використовувати метод setLayer ().
6. загальнодоступний статичний int getLayer (JComponent c): Цей метод повертає атрибут шару вказаного JComponent.
7. загальнодоступна статична JLayeredPane getLayeredPaneAbove (Компонент c): Цей метод повертає перший JLayeredPane, який містить зазначений компонент, або повертає нуль, якщо JLayeredPane не знайдено.
8. public void setLayer (Компонент c, рівень int): Цей метод встановлює атрибут JLayeredPane зазначеного компонента. Це робить компонент самим нижнім у зазначеному шарі.
9. public void setLayer (Компонент c, int-шар, int-позиція): Цей метод встановлює атрибут шару зазначеного компонента та встановлює положення компонента в цьому шарі.
10. public int getLayer (Компонент c): Цей метод повертає атрибут шару зазначеного Компонента.
11. public int getIndexOf (Компонент c): Цей метод повертає індекс зазначеного компонента в області ігнорування шарів. Найвищий компонент знаходиться в нульовому індексі, а найнижчий - у найвищому.
12. public void moveToFront (Компонент c): Цей метод переміщує вказаний компонент до верху в його поточному шарі (позиція 0).
13. public void moveToBack (Компонент c): Цей метод переміщує вказаний компонент до низу в його поточному шарі (позиція -1).
14. public void setPosition (Компонент c, позиція int): Цей метод встановлює положення зазначеного компонента в його шарі, де 0 - це найвища позиція, а -1 - найнижча позиція.
15. public int getPosition (Компонент c): Цей метод повертає відносне положення компонента в його шарі.
16. public int highLayer (): Цей метод повертає значення найвищого шару від усіх поточних дітей. Якщо дітей немає, він повертає 0.
17. public int lowLayer (): Цей метод повертає значення найнижчого шару від усіх поточних дітей. Якщо дітей немає, він повертає 0.
18. public int getComponentCountInLayer (int-шар): Цей метод повертає кількість дітей, присутніх у вказаному шарі.
19. public Component () getComponentsInLayer (int-шар): Цей метод повертає компоненти в масиві, присутньому в зазначеному шарі.
20. public void paint (Графіка g): Цей метод малює цей JLayeredPane у визначеному графічному контексті.
21. захищений Hashtable getComponentToLayer (): Цей метод повертає HashTable, який відображає компоненти в шари.
22. Захищений Integer getObjectForLayer (int-шар): Цей метод повертає ціле число, пов'язане із зазначеним шаром.
23. захищений int insertIndexForLayer (int-шар, int-позиція): Цей метод визначає та повертає належне місце для вставки нового дочірнього типу на основі вказаного шару та положення.
24. захищена String paramString (): Цей метод повертає рядкове представлення цієї області. Цей метод використовується внутрішньо для налагодження.
25. public AccessibleContext getAccessibleContext (): Цей метод повертає AccessibleContext, пов'язаний з цією панеллю.
Приклад JLayeredPane
Ось приклад JLayeredPane, наведений нижче з поясненням:
Код:
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);
));
)
)
Пояснення
У цьому прикладі ми реалізували програму, яка показує різні шари JLayeredPane та як вставити / видалити компоненти з панелі.
- Спочатку ми створили фрейм і додали до нього JLayeredPane.
- Потім додані кнопки в різних шарах JLayeredPane.
- Кнопки приєднали слухачів дій, щоб показати або приховати наступний шар.
- Положення кнопок із шаром встановлено так, щоб він виглядав правильно.
Вихід:
1. Це наше додаток, і ця зелена кнопка додається до нижнього шару.
2. Коли користувач натискає на зелену кнопку з першого шару, другий шар відкривається.
3. При натисканні на кнопку відкриття у другому шарі відкривається третій шар у JLayeredPane.
4. При натисканні на кнопку відкриття в третьому шарі відкривається четвертий шар.
5. При натисканні на кнопку відкриття в четвертому шарі відкривається п'ятий шар.
6. При натисканні на кнопку закриття в п'ятому шарі шар JLayeredPane закривається.
7. При натисканні на кнопку закриття в четвертому шарі шар JLayeredPane закривається.
8. При натисканні на кнопку закриття в третьому шарі шар JLayeredPane закривається.
9. При натисканні на кнопку закриття у другому шарі шар закривається.
Висновок
JLayeredPane простий у використанні та важливий компонент у Swing. Це дозволяє легко визначитися з компонентами при перекритті ситуацій.
Рекомендовані статті
Це посібник щодо JLayeredPane. Тут ми обговорюємо шари, конструктор та методи JLayeredPane разом із прикладом та його реалізацією коду. Ви також можете переглянути наступні статті, щоб дізнатися більше -
- JFrame на Java
- JComponent на Java
- JCheckBox на Java
- Що таке JVM?
- Приклади прапорця в Bootstrap