Класс 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
- См. также:
Краткое описание вложенных классов
Вложенные классы/интерфейсы, объявленные в классе javax.swing.JComponent
JComponent.AccessibleJComponent
Вложенные классы/интерфейсы, объявленные в классе java.awt.Container
Container.AccessibleAWTContainer
Вложенные классы/интерфейсы, объявленные в классе java.awt.Component
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
Краткое описание полей
Поля, объявленные в классе javax.swing.JComponent
listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
Поля, объявленные в классе java.awt.Component
accessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
Поля, объявленные в интерфейсе java.awt.image.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 задано. |
Методы, объявленные в классе javax.swing.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
Методы, объявленные в классе java.awt.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
Методы, объявленные в классе java.awt.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. Это свойство привязано.
- Возвращает:
- компоненты glassPane объекта
JLayerилиnull, если они отсутствуют - См. также:
setGlassPane
public void setGlassPane(JPanel glassPane)
JLayer, который может быть null. Это свойство привязано.
- Параметры:
-
glassPane- компонент glassPane для этого объектаJLayer - См. также:
createGlassPane
public JPanel createGlassPane()
glassPane. По умолчанию этот метод создаёт новый JPanel со значением видимости true и непрозрачности false.- Возвращает:
- стандартный
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 установлено.- Specified by:
-
imageUpdateв интерфейсеImageObserver - Overrides:
-
imageUpdateв классеComponent - Parameters:
-
img- наблюдаемая картинка -
x- координата x -
y- координата y -
w- ширина -
h- высота - Returns:
-
false, если флаги infoflags указывают, что изображение полностью загружено;trueв противном случае. - See Also:
paint
public void paint(Graphics g)
LayerUI.- Overrides:
-
paintв классеJComponent - Parameters:
-
g-Graphicsдля отрисовки - See Also:
paintComponent
protected void paintComponent(Graphics g)
paint(Graphics) и ComponentUI.update(Graphics, JComponent).- Overrides:
-
paintComponentв классеJComponent - Parameters:
-
g- объектGraphicsдля защиты - See Also:
isOptimizedDrawingEnabled
public boolean isOptimizedDrawingEnabled()
JLayer переопределяет стандартную реализацию этого метода (в JComponent), чтобы вернуть false. Это гарантирует, что механизм рисования вызовет реализацию JLayer's paint вместо прямого обращения к дочерним элементам JLayer.- Overrides:
-
isOptimizedDrawingEnabledв классеJComponent - Returns:
- false
propertyChange
public void propertyChange(PropertyChangeEvent evt)
- Specified by:
-
propertyChangeв интерфейсеPropertyChangeListener - Parameters:
-
evt- объект PropertyChangeEvent, описывающий источник события и изменённое свойство.
setLayerEventMask
public void setLayerEventMask(long layerEventMask)
LayerUI.eventDispatched(AWTEvent, JLayer). События передаются при условии, что LayerUI установлен для этого JLayer и 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.- Parameters:
-
layerEventMask- битовая маска типов событий для получения - See Also:
getLayerEventMask
public long getLayerEventMask()
JLayer и его LayerUI. Это означает, что метод LayerUI.eventDispatched(AWTEvent, JLayer) будет получать только события, соответствующие маске событий.
По умолчанию JLayer не получает никаких событий.
- Returns:
- битовая маска типов событий для получения этим
JLayer
updateUI
public void updateUI()
LayerUI.updateUI(JLayer), если LayerUI установлен.- Overrides:
-
updateUIв классеJComponent - See Also:
getPreferredScrollableViewportSize
public Dimension getPreferredScrollableViewportSize()
Если компонент представления этого слоя реализует интерфейс Scrollable, этот метод делегирует свою реализацию компоненту представления.
- Specified by:
-
getPreferredScrollableViewportSizeв интерфейсеScrollable - Returns:
- предпочтительный размер области прокрутки для компонента представления
- See Also:
getScrollableBlockIncrement
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
Если компонент представления этого слоя реализует интерфейс Scrollable, этот метод делегирует свою реализацию компоненту представления.
- Specified by:
-
getScrollableBlockIncrementв интерфейсеScrollable - Parameters:
-
visibleRect- область просмотра, видимая в области прокрутки -
orientation- либо SwingConstants.VERTICAL, либо SwingConstants.HORIZONTAL. -
direction- Меньше нуля для прокрутки вверх/влево, больше нуля для вниз/вправо. - Returns:
- приращение "блока" для прокрутки в указанном направлении
- See Also:
getScrollableTracksViewportHeight
public boolean getScrollableTracksViewportHeight()
false, чтобы указать, что высота области просмотра не определяет высоту слоя, если предпочтительная высота слоя меньше высоты области просмотра. Если компонент представления этого слоя реализует интерфейс Scrollable, этот метод делегирует свою реализацию компоненту представления.
- Specified by:
-
getScrollableTracksViewportHeightв интерфейсеScrollable - Returns:
- указывает, должен ли слой отслеживать высоту области просмотра
- See Also:
getScrollableTracksViewportWidth
public boolean getScrollableTracksViewportWidth()
Если компонент представления этого слоя реализует 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://download.java.net/java/early_access/jdk24/docs/api/java.desktop/javax/swing/JLayer.html