Класс JLayer<V extends Component>
- Параметры типа:
V- тип компонента представленияJLayer
- Все реализуемые интерфейсы:
ImageObserver, MenuContainer, PropertyChangeListener, Serializable, EventListener, Accessible, Scrollable
public final class JLayer<V extends Component> extends JComponent implements Scrollable, PropertyChangeListener, Accessible
JLayer — универсальный декоратор для компонентов Swing, который позволяет реализовывать различные расширенные эффекты отрисовки, а также получать уведомления обо всех AWTEventах, возникающих в его границах. JLayer делегирует обработку отрисовки и событий ввода объекту LayerUI, который выполняет собственно декорирование.
Пользовательская отрисовка, реализованная в LayerUI, и уведомления о событиях работают для самого JLayer и всех его подкомпонентов. Это сочетание позволяет расширять существующие компоненты, добавляя новые функциональные возможности, такие как временная блокировка иерархии, всплывающие подсказки для составных компонентов, улучшенная прокрутка с помощью мыши и т. д.
JLayer — хорошее решение, если нужно лишь выполнять пользовательскую отрисовку поверх составного компонента или перехватывать события ввода от его подкомпонентов.
import javax.swing.*;
import javax.swing.plaf.LayerUI;
import java.awt.*;
public class JLayerSample {
private static JLayer<JComponent> createLayer() {
// This custom layerUI will fill the layer with translucent green
// and print out all mouseMotion events generated within its borders
LayerUI<JComponent> layerUI = new LayerUI<JComponent>() {
public void paint(Graphics g, JComponent c) {
// paint the layer as is
super.paint(g, c);
// fill it with the translucent green
g.setColor(new Color(0, 128, 0, 128));
g.fillRect(0, 0, c.getWidth(), c.getHeight());
}
public void installUI(JComponent c) {
super.installUI(c);
// enable mouse motion events for the layer's subcomponents
((JLayer) c).setLayerEventMask(AWTEvent.MOUSE_MOTION_EVENT_MASK);
}
public void uninstallUI(JComponent c) {
super.uninstallUI(c);
// reset the layer event mask
((JLayer) c).setLayerEventMask(0);
}
// overridden method which catches MouseMotion events
public void eventDispatched(AWTEvent e, JLayer<? extends JComponent> l) {
System.out.println("AWTEvent detected: " + e);
}
};
// create a component to be decorated with the layer
JPanel panel = new JPanel();
panel.add(new JButton("JButton"));
// create the layer for the panel using our custom layerUI
return new JLayer<JComponent>(panel, layerUI);
}
private static void createAndShowGUI() {
final JFrame frame = new JFrame();
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
// work with the layer as with any other Swing component
frame.add(createLayer());
frame.setSize(200, 200);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
public static void main(String[] args) throws Exception {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
createAndShowGUI();
}
});
}
}
Примечание: JLayer не поддерживает следующие методы: Container.add(java.awt.Component)Container.add(String, java.awt.Component)Container.add(java.awt.Component, int)Container.add(java.awt.Component, Object)Container.add(java.awt.Component, Object, int)
UnsupportedOperationException; чтобы добавить компонент в JLayer, используйте setView(Component) или setGlassPane(JPanel).- Начиная с:
- 1.7
- См. также:
Краткое описание вложенных классов
Вложенные классы и интерфейсы, объявленные в классе JComponent
JComponent.AccessibleJComponent
Вложенные классы и интерфейсы, объявленные в классе Container
Container.AccessibleAWTContainer
Вложенные классы и интерфейсы, объявленные в классе Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
Краткое описание полей
Поля, объявленные в классе 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
Краткое описание конструкторов
| Конструктор | Описание |
|---|---|
JLayer() |
|
JLayer |
Создаёт новый объект JLayer со стандартным LayerUI. |
JLayer |
Создаёт новый объект JLayer с указанным компонентом представления и объектом LayerUI. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected void |
addImpl |
Этот метод не поддерживается JLayer и всегда выбрасывает UnsupportedOperationException
|
JPanel |
createGlassPane() |
Вызывается методами-конструкторами для создания стандартного glassPane. |
void |
doLayout() |
Делегирует выполнение метода LayerUI.doLayout(JLayer), если задан LayerUI. |
AccessibleContext |
getAccessibleContext() |
Возвращает AccessibleContext, связанный с этим JLayer. |
Border |
getBorder() |
Делегирует выполнение метода getView().getBorder(), если компонент представления является экземпляром javax.swing.JComponent; в противном случае возвращает null. |
JPanel |
getGlassPane() |
Возвращает компонент glassPane объекта JLayer или null. |
long |
getLayerEventMask() |
Возвращает битовую маску событий, получаемых этим JLayer и его LayerUI. |
Dimension |
getPreferredScrollableViewportSize() |
Возвращает предпочтительный размер области просмотра для компонента представления. |
int |
getScrollableBlockIncrement |
Возвращает приращение прокрутки, необходимое компонентам, отображающим логические строки или столбцы, чтобы полностью показать один блок строк или столбцов в зависимости от значения ориентации. |
boolean |
getScrollableTracksViewportHeight() |
Возвращает false, указывая, что высота области просмотра не определяет высоту слоя, если только предпочтительная высота слоя не меньше высоты области просмотра. |
boolean |
getScrollableTracksViewportWidth() |
Возвращает false, указывая, что ширина области просмотра не определяет ширину слоя, если только предпочтительная ширина слоя не меньше ширины области просмотра. |
int |
getScrollableUnitIncrement |
Возвращает приращение прокрутки, необходимое компонентам, отображающим логические строки или столбцы, чтобы полностью показать одну новую строку или один новый столбец в зависимости от значения ориентации. |
LayerUI |
getUI() |
Возвращает LayerUI для этого JLayer. |
V |
getView() |
Возвращает компонент представления объекта JLayer или null. |
boolean |
imageUpdate |
Делегирует выполнение метода LayerUI.imageUpdate(java.awt.Image, int, int, int, int, int, JLayer), если задан LayerUI. |
boolean |
isOptimizedDrawingEnabled() |
JLayer переопределяет стандартную реализацию этого метода (в JComponent), возвращая false. |
protected boolean |
isPaintingOrigin() |
Всегда возвращает true, чтобы отрисовка начиналась с JLayer или одного из его предков. |
void |
paint |
Делегирует всю отрисовку объекту LayerUI. |
protected void |
paintComponent |
Этот метод пуст, поскольку вся отрисовка выполняется методами paint(Graphics) и ComponentUI.update(Graphics, JComponent) |
void |
paintImmediately |
Делегирует выполнение метода LayerUI.paintImmediately(int, int, int, int, JLayer), если задан LayerUI. |
void |
propertyChange |
Этот метод вызывается при изменении связанного свойства. |
void |
setBorder |
Делегирует выполнение метода getView().setBorder(Border), если компонент представления является экземпляром javax.swing.JComponent; в противном случае этот метод ничего не делает. |
void |
setGlassPane |
Задаёт компонент glassPane объекта JLayer, который может быть null. |
void |
setLayerEventMask |
Включает доставку событий от JLayer и всех его потомков, определённых указанным параметром маски событий, методу LayerUI.eventDispatched(AWTEvent, JLayer). |
void |
setLayout |
Задаёт менеджер компоновки для этого контейнера. |
void |
setUI |
Задаёт LayerUI, который будет выполнять отрисовку и получать события ввода для этого JLayer. |
void |
setView |
Задаёт компонент представления объекта JLayer, который может быть null. |
void |
updateUI() |
Делегирует выполнение метода LayerUI.updateUI(JLayer), если задан LayerUI. |
Методы, объявленные в классе JComponent
addAncestorListener, addNotify, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, firePropertyChange, fireVetoableChange, getActionForKeyStroke, getActionMap, getAlignmentX, getAlignmentY, getAncestorListeners, getAutoscrolls, getBaseline, getBaselineResizeBehavior, 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, getUIClassID, getVerifyInputWhenFocusTarget, getVetoableChangeListeners, getVisibleRect, getWidth, getX, getY, grabFocus, hide, isDoubleBuffered, isLightweightComponent, isManagingFocus, isOpaque, isPaintingForPrint, isPaintingTile, isRequestFocusEnabled, isValidateRoot, paintBorder, paintChildren, paintImmediately, paramString, 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, setComponentPopupMenu, setDebugGraphicsOptions, setDefaultLocale, setDoubleBuffered, setEnabled, setFocusTraversalKeys, setFont, setForeground, setInheritsPopupMenu, setInputMap, setInputVerifier, setMaximumSize, setMinimumSize, setNextFocusableComponent, setOpaque, setPreferredSize, setRequestFocusEnabled, setToolTipText, setTransferHandler, setUI, setVerifyInputWhenFocusTarget, setVisible, unregisterKeyboardAction, update
Методы, объявленные в классе Container
add, add, add, add, add, addContainerListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, countComponents, deliverEvent, 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, remove, removeAll, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, 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, 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
Подробное описание конструкторов
JLayer
public JLayer()
- См. также:
JLayer
public JLayer(V view)
JLayer со стандартным LayerUI.- Параметры:
-
view— компонент, который будет декорирован этимJLayer - См. также:
JLayer
Подробное описание методов
getView
public V getView()
JLayer или null. Это связанное свойство.
- Возвращает:
- компонент представления объекта
JLayerилиnull, если он отсутствует - См. также:
setView
public void setView(V view)
JLayer, который может быть null. Это связанное свойство.
- Параметры:
-
view— компонент представления для этогоJLayer - См. также:
setUI
getUI
public LayerUI<? super V> getUI()
LayerUI для этого JLayer.- Переопределяет:
-
getUIв классеJComponent - Возвращает:
LayerUIдля этогоJLayer
getGlassPane
public JPanel getGlassPane()
JLayer или null. Это связанное свойство.
- Возвращает:
- компонент стеклянной панели объекта
JLayerилиnull, если он отсутствует - См. также:
setGlassPane
public void setGlassPane(JPanel glassPane)
JLayer, который может быть null. Это связанное свойство.
- Параметры:
-
glassPane— компонент стеклянной панели этогоJLayer - См. также:
createGlassPane
public JPanel createGlassPane()
glassPane. По умолчанию этот метод создает новую JPanel с включенной видимостью и отключенной непрозрачностью.- Возвращает:
- стандартную
glassPane
setLayout
public void setLayout(LayoutManager mgr)
Примечание: если mgr не является null, этот метод вызовет исключение, поскольку менеджеры компоновки не поддерживаются для JLayer.
- Переопределяет:
-
setLayoutв классеContainer - Параметры:
-
mgr— указанный менеджер компоновки - Вызывает исключение:
-
IllegalArgumentException— этот метод не поддерживается - См. также:
setBorder
public void setBorder(Border border)
getView().setBorder(Border), если компонент представления является экземпляром javax.swing.JComponent; в противном случае этот метод ничего не делает.- Переопределяет:
-
setBorderв классеJComponent - Параметры:
-
border— граница, отображаемая для компонентаview - См. также:
getBorder
public Border getBorder()
getView().getBorder(), если компонент представления является экземпляром javax.swing.JComponent; в противном случае возвращает null.- Переопределяет:
-
getBorderв классеJComponent - Возвращает:
- объект границы компонента
view - См. также:
addImpl
protected void addImpl(Component comp, Object constraints, int index)
JLayer и всегда вызывает UnsupportedOperationException
- Переопределяет:
-
addImplв классеContainer - Параметры:
-
comp— добавляемый компонент -
constraints— объект, задающий ограничения компоновки для этого компонента -
index— позиция в списке контейнера, в которую нужно вставить компонент;-1означает добавление в конец - Вызывает исключение:
-
UnsupportedOperationException— этот метод не поддерживается - См. также:
isPaintingOrigin
protected boolean isPaintingOrigin()
true, чтобы отрисовка начиналась с JLayer или одного из его предков.- Переопределяет:
-
isPaintingOriginв классеJComponent - Возвращает:
- true
- См. также:
paintImmediately
public void paintImmediately(int x, int y, int w, int h)
LayerUI.paintImmediately(int, int, int, int, JLayer), если задано LayerUI.- Переопределяет:
-
paintImmediatelyв классеJComponent - Параметры:
-
x— значение x области, которую нужно отрисовать -
y— значение y области, которую нужно отрисовать -
w— ширина области, которую нужно отрисовать -
h— высота области, которую нужно отрисовать - См. также:
imageUpdate
public boolean imageUpdate(Image img, int infoflags, int x, int y, int w, int h)
LayerUI.imageUpdate(java.awt.Image, int, int, int, int, int, JLayer), если задано LayerUI.- Определено в:
-
imageUpdateв интерфейсеImageObserver - Переопределяет:
-
imageUpdateв классеComponent - Параметры:
-
img— наблюдаемое изображение -
infoflags— дополнительную информацию см. вimageUpdate -
x— координата x -
y— координата y -
w— ширина -
h— высота - Возвращает:
-
false, если флаги infoflags указывают, что изображение полностью загружено; в противном случае —true. - См. также:
paint
public void paint(Graphics g)
LayerUI.- Переопределяет:
-
paintв классеJComponent - Параметры:
-
g—Graphics, на который выполняется отрисовка - См. также:
paintComponent
protected void paintComponent(Graphics g)
paint(Graphics) и ComponentUI.update(Graphics, JComponent).- Переопределяет:
-
paintComponentв классеJComponent - Параметры:
-
g— объектGraphics, который нужно защитить - См. также:
isOptimizedDrawingEnabled
public boolean isOptimizedDrawingEnabled()
JLayer переопределяет реализацию этого метода по умолчанию (в JComponent), возвращая false. Это гарантирует, что механизм отрисовки вызовет реализацию paint класса JLayer, а не будет напрямую обращаться к дочерним элементам JLayer.- Переопределяет:
-
isOptimizedDrawingEnabledв классеJComponent - Возвращает:
- false
propertyChange
public void propertyChange(PropertyChangeEvent evt)
- Определено в:
-
propertyChangeв интерфейсеPropertyChangeListener - Параметры:
-
evt— объект PropertyChangeEvent, описывающий источник события и изменившееся свойство.
setLayerEventMask
public void setLayerEventMask(long layerEventMask)
LayerUI.eventDispatched(AWTEvent, JLayer). События доставляются, если для этого JLayer задано LayerUI, а JLayer отображаем.
В следующем примере показано, как правильно использовать этот метод в реализациях LayerUI:
public void installUI(JComponent c) {
super.installUI(c);
JLayer l = (JLayer) c;
// this LayerUI will receive only key and focus events
l.setLayerEventMask(AWTEvent.KEY_EVENT_MASK | AWTEvent.FOCUS_EVENT_MASK);
}
public void uninstallUI(JComponent c) {
super.uninstallUI(c);
JLayer l = (JLayer) c;
// JLayer must be returned to its initial state
l.setLayerEventMask(0);
}
По умолчанию JLayer не получает событий, а его маска событий равна 0.- Параметры:
-
layerEventMask— битовая маска типов событий, которые нужно получать - См. также:
getLayerEventMask
public long getLayerEventMask()
JLayer и его LayerUI. Это означает, что метод LayerUI.eventDispatched(AWTEvent, JLayer) будет получать только события, соответствующие маске событий.
По умолчанию JLayer не получает событий.
- Возвращает:
- битовую маску типов событий, которые должен получать этот
JLayer
updateUI
public void updateUI()
LayerUI.updateUI(JLayer), если задано LayerUI.- Переопределяет:
-
updateUIв классеJComponent - См. также:
getPreferredScrollableViewportSize
public Dimension getPreferredScrollableViewportSize()
Если компонент-представление этого слоя реализует Scrollable, этот метод делегирует ему выполнение.
- Определено в:
-
getPreferredScrollableViewportSizeв интерфейсеScrollable - Возвращает:
- предпочтительный размер области просмотра для компонента-представления
- См. также:
getScrollableBlockIncrement
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
Если компонент-представление этого слоя реализует Scrollable, этот метод делегирует ему выполнение.
- Определено в:
-
getScrollableBlockIncrementв интерфейсеScrollable - Параметры:
-
visibleRect— видимая в области просмотра область представления -
orientation— SwingConstants.VERTICAL или SwingConstants.HORIZONTAL. -
direction— меньше нуля для прокрутки вверх/влево, больше нуля — вниз/вправо. - Возвращает:
- «блочное» приращение прокрутки в указанном направлении
- См. также:
getScrollableTracksViewportHeight
public boolean getScrollableTracksViewportHeight()
false, указывая, что высота области просмотра не определяет высоту слоя, если только предпочтительная высота слоя не меньше высоты области просмотра. Если компонент-представление этого слоя реализует Scrollable, этот метод делегирует ему выполнение.
- Определено в:
-
getScrollableTracksViewportHeightв интерфейсеScrollable - Возвращает:
- должен ли слой подстраиваться под высоту области просмотра
- См. также:
getScrollableTracksViewportWidth
public boolean getScrollableTracksViewportWidth()
false, указывая, что ширина области просмотра не определяет ширину слоя, если только предпочтительная ширина слоя не меньше ширины области просмотра. Если компонент-представление этого слоя реализует Scrollable, этот метод делегирует ему выполнение.
- Определено в:
-
getScrollableTracksViewportWidthв интерфейсеScrollable - Возвращает:
- должен ли слой подстраиваться под ширину области просмотра
- См. также:
getScrollableUnitIncrement
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
Контейнеры с прокруткой, такие как JScrollPane, используют этот метод каждый раз, когда пользователь запрашивает прокрутку на одну единицу.
Если компонент-представление этого слоя реализует Scrollable, этот метод делегирует ему выполнение.
- Определено в:
-
getScrollableUnitIncrementв интерфейсеScrollable - Параметры:
-
visibleRect— видимая в области просмотра область представления -
orientation— SwingConstants.VERTICAL или SwingConstants.HORIZONTAL. -
direction— меньше нуля для прокрутки вверх/влево, больше нуля — вниз/вправо. - Возвращает:
- «единичное» приращение прокрутки в указанном направлении. Это значение всегда должно быть положительным.
- См. также:
doLayout
public void doLayout()
LayerUI.doLayout(JLayer), если задано LayerUI.getAccessibleContext
public AccessibleContext getAccessibleContext()
JLayer.- Определено в:
-
getAccessibleContextв интерфейсеAccessible - Переопределяет:
-
getAccessibleContextв классеComponent - Возвращает:
- AccessibleContext, связанный с этим
JLayer.
© 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/JLayer.html