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.FlipBufferStrategyaccessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOWBOTTOM_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 クラスのサブクラス化を難しくするほどこのコンポーネントのジオメトリが複雑になるのを防ぐためです。ボーダー付きの JPanel を生成するには、ボーダーを持つ JLayer にそれを追加します。
注: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 、クラス: JComponentJLayer に関連付けられた AccessibleContext。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.