Класс JLayeredPane
- Все реализованные интерфейсы:
ImageObserver, MenuContainer, Serializable, Accessible
- Прямые известные подклассы:
JDesktopPane
@JavaBean(defaultProperty="accessibleContext") public class JLayeredPane extends JComponent implements Accessible
JLayeredPane добавляет глубину контейнеру JFC/Swing, позволяя компонентам при необходимости перекрывать друг друга. Объект Integer задает глубину каждого компонента в контейнере, где компоненты с более высокими номерами располагаются «поверх» других компонентов. Практические руководства и примеры использования многослойных панелей см. в разделе How to Use a Layered Pane руководства The Java Tutorial. Пример:
JLayeredPane разделяет диапазон глубины на несколько различных слоев. Размещение компонента на одном из этих слоев позволяет легко обеспечить правильное перекрытие компонентов без необходимости указывать конкретные числовые значения глубины: - DEFAULT_LAYER
- Стандартный слой, на котором размещается большинство компонентов. Это самый нижний слой.
- PALETTE_LAYER
- Слой палитр располагается над слоем по умолчанию. Удобен для плавающих панелей инструментов и палитр, чтобы они могли отображаться поверх других компонентов.
- MODAL_LAYER
- Слой, используемый для модальных диалоговых окон. Они будут отображаться поверх любых панелей инструментов, палитр или стандартных компонентов в контейнере.
- POPUP_LAYER
- Слой всплывающих элементов отображается поверх диалоговых окон. Таким образом, всплывающие окна, связанные с раскрывающимися списками, подсказками и другим справочным текстом, будут отображаться над компонентом, палитрой или диалоговым окном, создавшим их.
- DRAG_LAYER
- При перетаскивании компонента его переназначение на слой перетаскивания гарантирует, что он будет располагаться поверх любого другого компонента в контейнере. По завершении перетаскивания его можно вернуть на обычный слой.
JLayeredPane moveToFront(Component), moveToBack(Component) и setPosition можно использовать для изменения положения компонента внутри его слоя. Метод setLayer также можно использовать для изменения текущего слоя компонента. Подробные сведения
JLayeredPane управляет своим списком дочерних элементов аналогично Container, но позволяет определять несколько слоев внутри себя. Дочерние элементы на одном и том же слое управляются точно так же, как и в обычном объекте Container, с дополнительной возможностью: при перекрытии дочерних компонентов элементы на более высоких слоях отображаются поверх элементов на более низких слоях. Каждый слой представляет собой отдельное целое число. Атрибут слоя можно установить для Component, передав объект Integer при вызове add.
Например:
layeredPane.add(child, JLayeredPane.DEFAULT_LAYER);
or
layeredPane.add(child, Integer.valueOf(10));
Атрибут слоя также можно задать для Component, вызвав
layeredPaneParent.setLayer(child, 10) на объекте JLayeredPane, являющемся родителем компонента. Слой следует задавать до добавления дочернего элемента к родителю. Слои с более высокими номерами отображаются поверх слоев с более низкими номерами. Таким образом, используя числа для слоев и буквы для отдельных компонентов, типовой порядок списка будет выглядеть следующим образом:
5a, 5b, 5c, 2a, 2b, 2c, 1a где крайние левые компоненты находятся ближе всего к вершине отображения. Компонент можно переместить в самую верхнюю или самую нижнюю позицию внутри своего слоя, вызвав moveToFront или moveToBack.
Позицию компонента внутри слоя также можно указать напрямую. Допустимые значения позиций находятся в диапазоне от 0 до числа, на единицу меньшего количества компонентов на этом слое. Значение -1 указывает на самую нижнюю позицию. Значение 0 указывает на самую верхнюю позицию. В отличие от номеров слоев, более высокие значения позиции находятся ниже на дисплее.
Примечание: этот порядок (определяемый java.awt.Container) обратен порядку нумерации слоев. Однако обычно вы будете использоватьНиже приведены примеры использования метода add(Component, layer, position): Вызов add(5x, 5, -1) дает в результате:moveToFront,moveToBackиsetLayer.
5a, 5b, 5c, 5x, 2a, 2b, 2c, 1a Вызов add(5z, 5, 2) дает в результате:
5a, 5b, 5z, 5c, 5x, 2a, 2b, 2c, 1a Вызов add(3a, 3, 7) дает в результате:
5a, 5b, 5z, 5c, 5x, 3a, 2a, 2b, 2c, 1a При использовании стандартного механизма отрисовки/событий 1a отображается в самом низу, а 5a — поверх всех остальных компонентов. Примечание: эти слои являются просто логической конструкцией, и LayoutManager влияет на все дочерние компоненты данного контейнера без учета настроек слоев.
Предупреждение: Swing не является потокобезопасным. Дополнительные сведения см. в разделе Swing's Threading Policy.
Предупреждение: Сериализованные объекты этого класса будут несовместимы с будущими выпусками Swing. Текущая поддержка сериализации подходит для кратковременного хранения или RMI между приложениями, работающими на одной и той же версии Swing. Начиная с версии 1.4, поддержка долговременного хранения всех компонентов JavaBeans была добавлена в пакет java.beans. См. XMLEncoder.
- Начиная с версии:
- 1.2
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
protected class |
JLayeredPane.AccessibleJLayeredPane |
Этот класс реализует поддержку специальных возможностей для класса JLayeredPane. |
Вложенные классы/интерфейсы, объявленные в классе JComponent
JComponent.AccessibleJComponent
Вложенные классы/интерфейсы, объявленные в классе Container
Container.AccessibleAWTContainer
Вложенные классы/интерфейсы, объявленные в классе Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
Краткое описание полей
| Модификатор и тип | Поле | Описание |
|---|---|---|
static final Integer |
DEFAULT_LAYER |
Вспомогательный объект, определяющий слой по умолчанию (Default). |
static final Integer |
DRAG_LAYER |
Вспомогательный объект, определяющий слой перетаскивания (Drag). |
static final Integer |
FRAME_CONTENT_LAYER |
Вспомогательный объект, определяющий слой содержимого фрейма (Frame Content). |
static final String |
LAYER_PROPERTY |
Связанное свойство |
static final Integer |
MODAL_LAYER |
Вспомогательный объект, определяющий модальный слой (Modal). |
static final Integer |
PALETTE_LAYER |
Вспомогательный объект, определяющий слой палитр (Palette). |
static final Integer |
POPUP_LAYER |
Вспомогательный объект, определяющий слой всплывающих окон (Popup). |
Поля, объявленные в классе JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Поля, объявленные в классе Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Поля, объявленные в интерфейсе ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
JLayeredPane() |
Создает новый JLayeredPane |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
AccessibleContext |
getAccessibleContext() |
Возвращает AccessibleContext, связанный с этим JLayeredPane. |
int |
getComponentCountInLayer |
Возвращает количество дочерних элементов, находящихся в настоящее время на указанном слое. |
Component[] |
getComponentsInLayer |
Возвращает массив компонентов на указанном слое. |
protected Hashtable |
getComponentToLayer() |
Возвращает хэш-таблицу, связывающую компоненты со слоями. |
int |
getIndexOf |
Возвращает индекс указанного Component. |
int |
getLayer |
Возвращает атрибут слоя для указанного Component. |
static int |
getLayer |
Возвращает свойство layer для JComponent без каких-либо побочных эффектов, в отличие от setLayer(). |
static JLayeredPane |
getLayeredPaneAbove |
Удобный метод, возвращающий первый JLayeredPane, содержащий указанный компонент. |
protected Integer |
getObjectForLayer |
Возвращает объект Integer, связанный с указанным слоем. |
int |
getPosition |
Возвращает относительную позицию компонента внутри его слоя. |
int |
highestLayer() |
Возвращает наибольшее значение слоя среди всех текущих дочерних элементов. |
protected int |
insertIndexForLayer |
Примитивный метод, определяющий подходящее местоположение для вставки нового дочернего элемента на основе запросов слоя и позиции. |
boolean |
isOptimizedDrawingEnabled() |
Возвращает false, если компоненты на панели могут перекрываться, что делает оптимизированную отрисовку невозможной. |
int |
lowestLayer() |
Возвращает наименьшее значение слоя среди всех текущих дочерних элементов. |
void |
moveToBack |
Перемещает компонент в самый низ компонентов на его текущем слое (позиция -1). |
void |
moveToFront |
Перемещает компонент на самый верх компонентов на его текущем слое (позиция 0). |
void |
paint |
Отрисовывает этот JLayeredPane в указанном графическом контексте. |
protected String |
paramString() |
Возвращает строковое представление этого JLayeredPane. |
static void |
putLayer |
Устанавливает свойство layer для JComponent. |
void |
remove |
Удаляет компонент с указанным индексом из этой панели. |
void |
removeAll() |
Удаляет все компоненты из этого контейнера. |
void |
setLayer |
Устанавливает атрибут слоя для указанного компонента, делая его самым нижним компонентом на этом слое. |
void |
setLayer |
Устанавливает атрибут слоя для указанного компонента, а также задает его позицию внутри этого слоя. |
void |
setPosition |
Перемещает компонент в позицию position внутри его текущего слоя, где 0 — самая верхняя позиция внутри слоя, а -1 — самая нижняя позиция. |
Методы, объявленные в классе JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, getBorder, getBounds, getClientProperty, getComponentGraphics, getComponentPopupMenu, getConditionForKeyStroke, getDebugGraphicsOptions, getDefaultLocale, getFontMetrics, getGraphics, getHeight, getInheritsPopupMenu, getInputMap, getInputMap, getInputVerifier, getInsets, getInsets, getListeners, getLocation, getMaximumSize, getMinimumSize, getNextFocusableComponent, getPopupLocation, getPreferredSize, getRegisteredKeyStrokes, getRootPane, getSize, getToolTipLocation, getToolTipText, getToolTipText, getTopLevelAncestor, getTransferHandler, getUI, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isPaintingForPrint, isPaintingOrigin, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintComponent, paintImmediately, paintImmediately, print, printAll, printBorder, printChildren, printComponent, processComponentKeyEvent, processKeyBinding, processKeyEvent, processMouseEvent, processMouseMotionEvent, putClientProperty, registerKeyboardAction, registerKeyboardAction, removeAncestorListener, removeNotify, removeVetoableChangeListener, repaint, repaint, requestDefaultFocus, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, resetKeyboardActions, reshape, revalidate, scrollRectToVisible, setActionMap, setAlignmentX, setAlignmentY, setAutoscrolls, setBackground, setBorder, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update, updateUI
Методы, объявленные в классе Container
add, add, add, add, add, addContainerListener, addImpl, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, doLayout, findComponentAt, findComponentAt, getComponent, getComponentAt, getComponentAt, getComponentCount, getComponents, getComponentZOrder, getContainerListeners, getFocusTraversalKeys, getFocusTraversalPolicy, getLayout, getMousePosition, insets, invalidate, isAncestorOf, isFocusCycleRoot, isFocusCycleRoot, isFocusTraversalPolicyProvider, isFocusTraversalPolicySet, layout, list, list, locate, minimumSize, paintComponents, preferredSize, printComponents, processContainerEvent, processEvent, remove, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, setLayout, transferFocusDownCycle, validate, validateTree
Методы, объявленные в классе Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, bounds, checkImage, checkImage, coalesceEvents, contains, createImage, createImage, createVolatileImage, createVolatileImage, disableEvents, dispatchEvent, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, firePropertyChange, getBackground, getBounds, getColorModel, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeysEnabled, getFont, getForeground, getGraphicsConfiguration, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getLocale, getLocation, getLocationOnScreen, getMouseListeners, getMouseMotionListeners, getMousePosition, getMouseWheelListeners, getName, getParent, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getToolkit, getTreeLock, gotFocus, handleEvent, hasFocus, imageUpdate, inside, isBackgroundSet, isCursorSet, isDisplayable, isEnabled, isFocusable, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isMaximumSizeSet, isMinimumSizeSet, isPreferredSizeSet, isShowing, isValid, isVisible, keyDown, keyUp, list, list, list, location, lostFocus, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, postEvent, prepareImage, prepareImage, processComponentEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setMixingCutoutShape, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle
Подробное описание полей
DEFAULT_LAYER
public static final Integer DEFAULT_LAYER
PALETTE_LAYER
public static final Integer PALETTE_LAYER
MODAL_LAYER
public static final Integer MODAL_LAYER
POPUP_LAYER
public static final Integer POPUP_LAYER
DRAG_LAYER
public static final Integer DRAG_LAYER
FRAME_CONTENT_LAYER
public static final Integer FRAME_CONTENT_LAYER
- См. также:
LAYER_PROPERTY
public static final String LAYER_PROPERTY
- См. также:
Подробное описание конструкторов
JLayeredPane
public JLayeredPane()
Подробное описание методов
remove
removeAll
isOptimizedDrawingEnabled
@BeanProperty(bound=false) public boolean isOptimizedDrawingEnabled()
- Переопределяет:
-
isOptimizedDrawingEnabledв классеJComponent - Возвращает:
- false, если компоненты могут перекрываться; в противном случае true
- См. также:
putLayer
public static void putLayer(JComponent c, int layer)
- Параметры:
-
c— JComponent для перемещения -
layer— int, указывающее слой, в который его нужно переместить - См. также:
getLayer
public static int getLayer(JComponent c)
- Параметры:
-
c— проверяемый JComponent - Возвращает:
- int, указывающее слой компонента
getLayeredPaneAbove
public static JLayeredPane getLayeredPaneAbove(Component c)
- Параметры:
-
c— проверяемый Component - Возвращает:
- JLayeredPane, содержащий компонент, или null, если JLayeredPane не найден в иерархии компонентов
- См. также:
setLayer
public void setLayer(Component c, int layer)
- Параметры:
-
c— Component, для которого устанавливается слой -
layer— int, указывающее устанавливаемый слой, где меньшие числа ближе к низу
setLayer
public void setLayer(Component c, int layer, int position)
- Параметры:
-
c— Component, для которого устанавливается слой -
layer— int, указывающее устанавливаемый слой, где меньшие числа ближе к низу -
position— int, указывающее позицию внутри слоя, где 0 — самая верхняя позиция, а -1 — самая нижняя позиция
getLayer
public int getLayer(Component c)
- Параметры:
-
c— проверяемый Component - Возвращает:
- int, указывающее текущий слой компонента
getIndexOf
public int getIndexOf(Component c)
- Параметры:
-
c— проверяемый Component - Возвращает:
- int, указывающее индекс компонента
moveToFront
public void moveToFront(Component c)
- Параметры:
-
c— перемещаемый Component - См. также:
moveToBack
public void moveToBack(Component c)
- Параметры:
-
c— перемещаемый Component - См. также:
setPosition
public void setPosition(Component c, int position)
position в пределах его текущего слоя, где 0 — самая верхняя позиция в слое, а -1 — самая нижняя позиция. Примечание: нумерация позиций определяется java.awt.Container и противоположна нумерации слоев. Меньшие номера позиций находятся ближе к верху (0 — самый верхний), а большие номера позиций ближе к низу.
- Параметры:
-
c— перемещаемый Component -
position— int в диапазоне -1..N-1, где N — количество компонентов в текущем слое компонента
getPosition
public int getPosition(Component c)
- Параметры:
-
c— проверяемый Component - Возвращает:
- int, задающее позицию компонента, где 0 — самая верхняя позиция, а наибольшее значение индекса равно количеству компонентов на этом слое минус 1
- См. также:
highestLayer
public int highestLayer()
- Возвращает:
- int, указывающее слой самого верхнего компонента на панели, или ноль, если дочерние элементы отсутствуют
lowestLayer
public int lowestLayer()
- Возвращает:
- int, указывающее слой самого нижнего компонента на панели, или ноль, если дочерние элементы отсутствуют
getComponentCountInLayer
public int getComponentCountInLayer(int layer)
- Параметры:
-
layer— int, указывающее проверяемый слой - Возвращает:
- int, указывающее количество компонентов в этом слое
getComponentsInLayer
public Component[] getComponentsInLayer(int layer)
- Параметры:
-
layer— int, указывающее проверяемый слой - Возвращает:
- массив объектов Component, содержащихся на этом слое
paint
public void paint(Graphics g)
- Переопределяет:
-
paintв классеJComponent - Параметры:
-
g— контекст Graphics, в котором выполняется отрисовка - См. также:
getComponentToLayer
protected Hashtable<Component, Integer> getComponentToLayer()
- Возвращает:
- Hashtable, используемая для сопоставления компонентов с их слоями
getObjectForLayer
protected Integer getObjectForLayer(int layer)
- Параметры:
-
layer— int, указывающее слой - Возвращает:
- объект Integer для этого слоя
insertIndexForLayer
protected int insertIndexForLayer(int layer, int position)
- Параметры:
-
layer— int, указывающее слой -
position— int, указывающее позицию внутри слоя - Возвращает:
- int, задающее (абсолютный) индекс вставки
- См. также:
paramString
protected String paramString()
null.- Переопределяет:
-
paramStringв классеJComponent - Возвращает:
- строковое представление этого JLayeredPane.
getAccessibleContext
@BeanProperty(bound=false) public AccessibleContext getAccessibleContext()
- Указано в:
-
getAccessibleContextв интерфейсеAccessible - Переопределяет:
-
getAccessibleContextв классеComponent - Возвращает:
- AccessibleJLayeredPane, служащий в качестве AccessibleContext этого JLayeredPane
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.desktop/javax/swing/JLayeredPane.html