JLayeredPane - Пълно ръководство за JLayeredPane с примери

Съдържание:

Anonim

Въведение в 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. защитен void addImpl (Component comp, Object ограничения, int индекс): Този метод добавя компонент към този контейнер в посочения индекс. Също така 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 heightLayer (): Този метод връща стойността на най-високия слой от всички текущи деца. Ако няма деца, тя връща 0.

17. public int NajniLayer (): Този метод връща стойността на най-ниския слой от всички текущи деца. Ако няма деца, тя връща 0.

18. public int getComponentCountInLayer (int слой): Този метод връща броя на децата, присъстващи в определения слой.

19. public Component () getComponentsInLayer (int слой): Този метод връща компонентите в масив, присъстващ в зададения слой.

20. публична невалидна боя (Графика g): Този метод рисува този JLayeredPane в зададения графичен контекст.

21. защитен Hashtable getComponentToLayer (): Този метод връща HashTable, която пренася компонентите в слоеве.

22. защитен Integer getObjectForLayer (int слой): Този метод връща цяло число, свързано с посочения слой.

23. защитен int insertIndexForLayer (int слой, int позиция): Този метод определя и връща правилното местоположение за вмъкване на ново дете въз основа на зададения слой и позиция.

24. защитен String paramString (): Този метод връща низовото представяне на този прозорец. Този метод се използва вътрешно за отстраняване на грешки.

25. обществен 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 заедно с пример и неговата реализация на код. Можете също да разгледате следните статии, за да научите повече -

  1. JFrame на Java
  2. JComponent в Java
  3. JCheckBox на Java
  4. Какво е JVM?
  5. Примери за отметка в Bootstrap