V - JLayerのビュー・コンポーネントの型public final class JLayer<V extends Component> extends JComponent implements Scrollable, PropertyChangeListener, Accessible
JLayerは、さまざまな高度なペイント効果を実装したり、そのボーダー内で生成されるすべてのAWTEventの通知を受信したりするために使用できる、Swingコンポーネントのための汎用のデコレータです。
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(JFrame.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)を使用します。JLayer(Component), setView(Component), getView(), LayerUI, JLayer(Component, LayerUI), setUI(javax.swing.plaf.LayerUI), getUI()JComponent.AccessibleJComponentContainer.AccessibleAWTContainerComponent.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategylistenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWaccessibleContext, BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENTABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH| コンストラクタと説明 |
|---|
JLayer()
|
JLayer(V view)
デフォルトの
LayerUIを使用して新しいJLayerオブジェクトを作成します。 |
JLayer(V view, LayerUI<V> ui)
指定されたビュー・コンポーネントと
LayerUIオブジェクトを使用して新しいJLayerオブジェクトを作成します。 |
| 修飾子と型 | メソッドと説明 |
|---|---|
protected void |
addImpl(Component comp, Object constraints, int index)
このメソッドは
JLayerではサポートされていません。このメソッドは常にUnsupportedOperationExceptionをスローします。 |
void |
addNotify()
このコンポーネントに現在親コンポーネントがあることを、このコンポーネントに通知します。
|
JPanel |
createGlassPane()
デフォルトの
glassPaneを作成するために、コンストラクタ・メソッドから呼び出されます。 |
void |
doLayout()
LayerUIが設定されている場合、機能をLayerUI.doLayout(JLayer)メソッドに委譲します。 |
AccessibleContext |
getAccessibleContext()
この
JLayerに関連付けられたAccessibleContextを取得します。 |
JPanel |
getGlassPane()
JLayerのglassPaneコンポーネントまたはnullを返します。 |
long |
getLayerEventMask()
この
JLayerおよびそのLayerUIによって受信するイベント・マスクのビットマップを返します。 |
Dimension |
getPreferredScrollableViewportSize()
ビュー・コンポーネントのビュー・ポートの適切なサイズを返します。
|
int |
getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
スクロール増分値を返します。スクロール増分値は、orientationの値によって、1ブロック分の行または列を完全に表示するために、論理行または論理列を表示するコンポーネントに必要です。
|
boolean |
getScrollableTracksViewportHeight()
レイヤーの適切な高さがビュー・ポートの高さより低い場合を除き、
falseを返して、ビュー・ポートの高さがレイヤーの高さを決めないことを示します。 |
boolean |
getScrollableTracksViewportWidth()
レイヤーの適切な幅がビュー・ポートの幅より狭い場合を除き、
falseを返して、ビュー・ポートの幅がレイヤーの幅を決めないことを示します。 |
int |
getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
スクロール増分値を返します。スクロール増分値は、orientationの値によって、新しい1行または1列を完全に表示するために、論理行または論理列を表示するコンポーネントに必要です。
|
LayerUI<? super V> |
getUI()
この
JLayerのLayerUIを返します。 |
V |
getView()
JLayerのビュー・コンポーネントまたはnullを返します。 |
boolean |
isOptimizedDrawingEnabled()
JLayerは(JComponentで)このメソッドのデフォルト実装をオーバーライドし、falseを返します。 |
protected boolean |
isPaintingOrigin()
常に
trueを返し、JLayerまたはその上位オブジェクトのいずれかからペイントを実行します。 |
void |
paint(Graphics g)
すべてのペイントを
LayerUIオブジェクトに委譲します。 |
protected void |
paintComponent(Graphics g)
すべてのペイントは
paint(Graphics)およびComponentUI.update(Graphics, JComponent)メソッドによって実行されるため、このメソッドは空です。 |
void |
paintImmediately(int x, int y, int w, int h)
LayerUIが設定されている場合、機能をLayerUI.paintImmediately(int, int, int, int, JLayer)メソッドに委譲します。 |
void |
propertyChange(PropertyChangeEvent evt)
バウンド・プロパティの変更時に呼び出されます。
|
void |
remove(Component comp)
このコンテナから、指定されたコンポーネントを削除します。
|
void |
removeAll()
このコンテナからすべてのコンポーネントを削除します。
|
void |
removeNotify()
このコンポーネントに親コンポーネントがなくなったことを、このコンポーネントに通知します。
|
void |
setBorder(Border border)
null以外のボーダー(または0以外のイン・セット)は、サポートされていません。これは、LayerUIクラスのサブクラス化を難しくするほどこのコンポーネントのジオメトリが複雑になるのを防ぐためです。 |
void |
setGlassPane(JPanel glassPane)
JLayerのglassPaneコンポーネントを設定します。nullも指定できます。 |
void |
setLayerEventMask(long layerEventMask)
指定されたイベント・マスク・パラメータによって定義されたJLayerとそのすべての下位オブジェクトからのイベントを、
LayerUI.eventDispatched(AWTEvent, JLayer)メソッドに送信できるようにします。 |
void |
setLayout(LayoutManager mgr)
このコンテナのレイアウト・マネージャを設定します。
|
void |
setUI(LayerUI<? super V> ui)
ペイントを実行して、この
JLayerの入力イベントを受信するLayerUIを設定します。 |
void |
setView(V view)
JLayerのビュー・コンポーネントを設定します。nullも指定できます。 |
void |
updateUI()
LayerUIが設定されている場合、機能をLayerUI.updateUI(JLayer)メソッドに委譲します。 |
addAncestorListener, addVetoableChangeListener, computeVisibleRect, contains, createToolTip, disable, enable, firePropertyChange, 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, 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, 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, updateadd, 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, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, transferFocusDownCycle, validate, validateTreeaction, 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, 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, getPeer, 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, resize, resize, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setFocusable, setFocusTraversalKeysEnabled, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCyclepublic JLayer()
public JLayer(V view)
LayerUIを使用して新しいJLayerオブジェクトを作成します。view - このJLayerによって装飾されるコンポーネントsetUI(javax.swing.plaf.LayerUI<? super V>)public V getView()
JLayerのビュー・コンポーネントまたはnullを返します。JLayerのビュー・コンポーネント。存在しない場合はnullsetView(Component)public void setView(V view)
JLayerのビュー・コンポーネントを設定します。nullも指定できます。view - このJLayerのビュー・コンポーネントgetView()public void setUI(LayerUI<? super V> ui)
JLayerの入力イベントを受信するLayerUIを設定します。ui - このJLayerのLayerUIpublic JPanel getGlassPane()
JLayerのglassPaneコンポーネントまたはnullを返します。JLayerのglassPaneコンポーネント。存在しない場合はnullsetGlassPane(JPanel)public void setGlassPane(JPanel glassPane)
JLayerのglassPaneコンポーネントを設定します。nullも指定できます。glassPane - このJLayerのglassPaneコンポーネントgetGlassPane()public JPanel createGlassPane()
glassPaneを作成するために、コンストラクタ・メソッドから呼び出されます。デフォルトでは、このメソッドは可視性をtrueに、不透明性をfalseに設定して新しいJPanelを作成します。glassPanepublic void setLayout(LayoutManager mgr)
注: mgrがnull以外の場合、レイアウト・マネージャがJLayerではサポートされていないためこのメソッドは例外をスローします。
setLayout 、クラス: Containermgr - 指定されたレイアウト・マネージャIllegalArgumentException - このメソッドがサポートされていない場合Container.doLayout(), Container.getLayout(), Container.invalidate()public void setBorder(Border border)
null以外のボーダー(または0以外のイン・セット)は、サポートされていません。これは、LayerUIクラスのサブクラス化を難しくするほどこのコンポーネントのジオメトリが複雑になるのを防ぐためです。ボーダー付きのJLayerを生成するには、ボーダーを持つJPanelにそれを追加します。
注: borderがnull以外の場合、ボーダーがJLayerではサポートされていないためこのメソッドは例外をスローします。
setBorder 、クラス: JComponentborder - 設定するBorderIllegalArgumentException - このメソッドがサポートされていない場合Border, CompoundBorderprotected void addImpl(Component comp, Object constraints, int index)
JLayerではサポートされていません。このメソッドは常にUnsupportedOperationExceptionをスローします。addImpl 、クラス: Containercomp - 追加されるコンポーネントconstraints - このコンポーネントのレイアウト制約を表現するオブジェクトindex - コンポーネントを挿入するコンテナのリスト内での位置。-1は最後に挿入することを意味するUnsupportedOperationException - このメソッドがサポートされていない場合setView(Component), setGlassPane(JPanel)public void remove(Component comp)
removeLayoutComponentメソッドを使用してこのコンテナのレイアウトからコンポーネントを削除するために、レイアウト・マネージャにも通知します。
このメソッドではレイアウトに関連する情報が変更されるため、コンポーネント階層が無効になります。コンテナがすでに表示されている場合は、変更を反映するために、あとで階層を検証する必要があります。
remove 、クラス: Containercomp - 削除されるコンポーネントContainer.add(java.awt.Component), Container.invalidate(), Container.validate(), Container.remove(int)public void removeAll()
removeLayoutComponentメソッドを使用してこのコンテナのレイアウトからコンポーネントを削除するために、レイアウト・マネージャにも通知します。
このメソッドではレイアウトに関連する情報が変更されるため、コンポーネント階層が無効になります。コンテナがすでに表示されている場合は、変更を反映するために、あとで階層を検証する必要があります。
removeAll 、クラス: ContainerContainer.add(java.awt.Component), Container.remove(int), Container.invalidate()protected boolean isPaintingOrigin()
trueを返し、JLayerまたはその上位オブジェクトのいずれかからペイントを実行します。isPaintingOrigin 、クラス: JComponentJComponent.isPaintingOrigin()public void paintImmediately(int x,
int y,
int w,
int h)
LayerUIが設定されている場合、機能をLayerUI.paintImmediately(int, int, int, int, JLayer)メソッドに委譲します。paintImmediately 、クラス: JComponentx - ペイント領域のx座標y - ペイント領域のy座標w - ペイント領域の幅h - ペイント領域の高さJComponent.repaint(long, int, int, int, int), JComponent.isPaintingOrigin()protected void paintComponent(Graphics g)
paint(Graphics)およびComponentUI.update(Graphics, JComponent)メソッドによって実行されるため、このメソッドは空です。paintComponent 、クラス: JComponentg - 保護対象のGraphicsオブジェクトJComponent.paint(java.awt.Graphics), ComponentUIpublic boolean isOptimizedDrawingEnabled()
JLayerは(JComponentで)このメソッドのデフォルト実装をオーバーライドし、falseを返します。その結果、描画機構はJLayerの子に直接メッセージを送るのではなく、JLayerのpaintの実装を呼び出します。isOptimizedDrawingEnabled 、クラス: JComponentpublic void propertyChange(PropertyChangeEvent evt)
propertyChange 、インタフェース: PropertyChangeListenerevt - イベント・ソースと変更されたプロパティを記述したPropertyChangeEventオブジェクト。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(), LayerUI.eventDispatched(AWTEvent, JLayer), Component.isDisplayable()public long getLayerEventMask()
JLayerおよびそのLayerUIによって受信するイベント・マスクのビットマップを返します。
つまり、LayerUI.eventDispatched(AWTEvent, JLayer)メソッドはイベント・マスクに一致するイベントのみを受け取ります。
デフォルトではJLayerはイベントを受け取りません。
JLayer用に受け取るイベント型のビット・マスクpublic void updateUI()
LayerUIが設定されている場合、機能をLayerUI.updateUI(JLayer)メソッドに委譲します。public Dimension getPreferredScrollableViewportSize()
このレイヤーのビュー・コンポーネントがScrollableを実装する場合、このメソッドは、その実装をビュー・コンポーネントに委譲します。
getPreferredScrollableViewportSize 、インタフェース: ScrollableScrollablepublic int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
このレイヤーのビュー・コンポーネントがScrollableを実装する場合、このメソッドは、その実装をビュー・コンポーネントに委譲します。
getScrollableBlockIncrement 、インタフェース: ScrollablevisibleRect - ビュー・ポート内の可視のビュー領域orientation - SwingConstants.VERTICALまたはSwingConstants.HORIZONTAL。direction - 上または左にスクロールする場合は0より小さく、下または右にスクロールする場合は0より大きい。Scrollablepublic boolean getScrollableTracksViewportHeight()
falseを返して、ビュー・ポートの高さがレイヤーの高さを決めないことを示します。
このレイヤーのビュー・コンポーネントがScrollableを実装する場合、このメソッドは、その実装をビュー・コンポーネントに委譲します。
getScrollableTracksViewportHeight 、インタフェース: ScrollableScrollablepublic boolean getScrollableTracksViewportWidth()
falseを返して、ビュー・ポートの幅がレイヤーの幅を決めないことを示します。
このレイヤーのビュー・コンポーネントがScrollableを実装する場合、このメソッドは、その実装をビュー・コンポーネントに委譲します。
getScrollableTracksViewportWidth 、インタフェース: ScrollableScrollablepublic int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
JScrollPaneなどのスクロール・コンテナは、ユーザーがユニット・スクロールを要求すると、このメソッドを使用します。
このレイヤーのビュー・コンポーネントがScrollableを実装する場合、このメソッドは、その実装をビュー・コンポーネントに委譲します。
getScrollableUnitIncrement 、インタフェース: ScrollablevisibleRect - ビュー・ポート内の可視のビュー領域orientation - SwingConstants.VERTICALまたはSwingConstants.HORIZONTAL。direction - 上または左にスクロールする場合は0より小さく、下または右にスクロールする場合は0より大きい。Scrollablepublic void addNotify()
KeyboardActionイベント・リスナーで設定されます。このメソッドは、ツールキットによって内部で呼び出され、プログラムから直接呼び出されることはありません。public void removeNotify()
KeyboardActionが削除されます。このメソッドは、ツールキットによって内部で呼び出され、プログラムから直接呼び出されることはありません。public void doLayout()
LayerUIが設定されている場合、機能をLayerUI.doLayout(JLayer)メソッドに委譲します。public AccessibleContext getAccessibleContext()
JLayerに関連付けられたAccessibleContextを取得します。getAccessibleContext 、インタフェース: AccessiblegetAccessibleContext、クラス: ComponentJLayerに関連付けられたAccessibleContext。 バグまたは機能を送信
詳細なAPIリファレンスおよび開発者ドキュメントについては、Java SEのドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright© 1993, 2014, Oracle and/or its affiliates. All rights reserved.