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: этот слой JLayeredPane используется для отображения всплывающих окон над модальным слоем.
  • DRAG_LAYER: компонент отображается в этом слое (над всплывающим слоем) при его перетаскивании. Когда перетаскивание закончено, компонент отображается в своем исходном слое.

Сведения о конструкторе: это единственный конструктор, который создает JLayeredPane.

public JLayeredPane()

Детали метода JLayeredPane

Вот некоторые методы, которые мы используем, объясненные ниже в JLayeredPane:

1. protected void addImpl (Компонент комп, ограничения объекта, индекс int): этот метод добавляет компонент в этот контейнер по указанному индексу. Кроме того, LayoutManager уведомляется о добавлении указанного компонента в макет этого контейнера с использованием указанного объекта ограничений. Для этого используется метод addLayoutComponent.

2. public void remove (int index): этот метод удаляет компонент из указанного индекса этой панели.

3. public void removeAll (): удаляет все компоненты из этой панели.

4. public boolean isOptimizedDrawingEnabled (): Если слои на панели могут перекрываться, это делает оптимизированное рисование невозможным и возвращает false. В противном случае правда.

5. public static void putLayer (JComponent c, int layer): этот метод устанавливает уровень для JComponent. Этот метод не вызывает никаких побочных эффектов, таких как рисование, добавление, удаление и т. Д. Чтобы получить эти побочные эффекты, вы можете использовать метод setLayer ().

6. public static int getLayer (JComponent c): этот метод возвращает атрибут слоя указанного JComponent.

7. public static JLayeredPane getLayeredPaneAbove (Компонент c): этот метод возвращает первый JLayeredPane, который содержит указанный компонент, или возвращает null, если JLayeredPane не найден.

8. public void setLayer (Component c, int layer): этот метод устанавливает атрибут JLayeredPane указанного компонента. Это делает компонент самым нижним в указанном слое.

9. public void setLayer (Component c, int layer, int position): этот метод устанавливает атрибут слоя указанного компонента и устанавливает положение компонента в этом слое.

10. public int getLayer (Component c): этот метод возвращает атрибут слоя указанного Компонента.

11. public int getIndexOf (Component c): этот метод возвращает индекс указанного компонента на панели, игнорируя слои. Самый верхний компонент имеет нулевой индекс, а самый нижний компонент имеет самый высокий индекс.

12. public void moveToFront (Component c): Этот метод перемещает указанный компонент вверх в его текущем слое (позиция 0).

13. public void moveToBack (Component c): Этот метод перемещает указанный компонент в нижнюю часть его текущего слоя (позиция -1).

14. public void setPosition (Component c, int position): Этот метод устанавливает позицию указанного компонента в его слое, где 0 - самая верхняя позиция, а –1 - самая нижняя позиция.

15. public int getPosition (Component c): этот метод возвращает относительную позицию компонента в его слое.

16. public int самый высокий уровень (): этот метод возвращает значение самого высокого уровня из всех текущих дочерних элементов. Если нет детей, возвращается 0.

17. public int lowerLayer (): Этот метод возвращает значение самого низкого слоя из всех текущих дочерних элементов. Если нет детей, возвращается 0.

18. public int getComponentCountInLayer (int layer): этот метод возвращает количество дочерних элементов, присутствующих в настоящее время в указанном слое.

19. public Component () getComponentsInLayer (int layer): этот метод возвращает компоненты в массиве, присутствующем в указанном уровне.

20. public void paint (Graphics g): этот метод рисует этот JLayeredPane в указанном графическом контексте.

21. protected Hashtable getComponentToLayer (): Этот метод возвращает HashTable, который отображает компоненты на слои.

22. protected Integer getObjectForLayer (int layer): этот метод возвращает целое число, связанное с указанным уровнем.

23. protected int insertIndexForLayer (int layer, int position): этот метод определяет и возвращает правильное местоположение для вставки нового дочернего элемента на основе указанного слоя и позиции.

24. protected 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 вместе с примером и его реализацией кода. Вы также можете посмотреть следующие статьи, чтобы узнать больше -

  1. JFrame в Java
  2. JComponent в Java
  3. JCheckBox в Java
  4. Что такое JVM?
  5. Примеры флажка в Bootstrap