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.AccessibleJComponent
Container.AccessibleAWTContainer
Component.AccessibleAWTComponent, Component.BaselineResizeBehavior, Component.BltBufferStrategy, Component.FlipBufferStrategy
accessibleContext, listenerList, TOOL_TIP_TEXT_KEY, ui, UNDEFINED_CONDITION, WHEN_ANCESTOR_OF_FOCUSED_COMPONENT, WHEN_FOCUSED, WHEN_IN_FOCUSED_WINDOW
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
ABORT, 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, update
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, removeContainerListener, setComponentZOrder, setFocusCycleRoot, setFocusTraversalPolicy, setFocusTraversalPolicyProvider, transferFocusDownCycle, validate, validateTree
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, 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, transferFocusUpCycle
public JLayer()
public JLayer(V view)
LayerUI
を使用して新しい JLayer
オブジェクトを作成します。view
- この JLayer
によって装飾されるコンポーネントsetUI(javax.swing.plaf.LayerUI<? super V>)
public V getView()
JLayer
のビューコンポーネントまたは null
を返します。JLayer
のビューコンポーネント。存在しない場合は null
setView(Component)
public void setView(V view)
JLayer
のビューコンポーネントを設定します。null
も指定できます。view
- この JLayer
のビューコンポーネントgetView()
public void setUI(LayerUI<? super V> ui)
JLayer
の入力イベントを受信する LayerUI
を設定します。ui
- この JLayer
の LayerUI
public JPanel getGlassPane()
JLayer
の glassPane コンポーネントまたは null
を返します。JLayer
の glassPane コンポーネント。存在しない場合は null
setGlassPane(JPanel)
public void setGlassPane(JPanel glassPane)
JLayer
の glassPane コンポーネントを設定します。null
も指定できます。glassPane
- この JLayer
の glassPane コンポーネントgetGlassPane()
public JPanel createGlassPane()
glassPane
を作成するために、コンストラクタメソッドから呼び出されます。デフォルトでは、このメソッドは可視性を true に、不透明性を false に設定して新しい JPanel を作成します。glassPane
public void setLayout(LayoutManager mgr)
mgr
が null
以外の場合、レイアウトマネージャーが JLayer
ではサポートされていないためこのメソッドは例外をスローします。setLayout
、クラス: Container
mgr
- 指定されたレイアウトマネージャーIllegalArgumentException
- このメソッドがサポートされていない場合Container.doLayout()
, Container.getLayout()
, Container.invalidate()
public void setBorder(Border border)
null
以外のボーダー (または 0 以外のインセット) は、サポートされていません。これは、LayerUI
クラスのサブクラス化を難しくするほどこのコンポーネントのジオメトリが複雑になるのを防ぐためです。ボーダー付きの JPanel
を生成するには、ボーダーを持つ JLayer
にそれを追加します。
注:border
が null
以外の場合、ボーダーが JLayer
ではサポートされていないためこのメソッドは例外をスローします。setBorder
、クラス: JComponent
border
- 設定する Border
IllegalArgumentException
- このメソッドがサポートされていない場合Border
, CompoundBorder
protected void addImpl(Component comp, Object constraints, int index)
JLayer
ではサポートされていません。このメソッドは常に UnsupportedOperationException
をスローします。addImpl
、クラス: Container
comp
- 追加されるコンポーネントconstraints
- このコンポーネントのレイアウト制約を表現するオブジェクトindex
- コンポーネントを挿入するコンテナのリスト内での位置。-1
は最後に挿入することを意味するUnsupportedOperationException
- このメソッドがサポートされていない場合setView(Component)
, setGlassPane(JPanel)
public void remove(Component comp)
removeLayoutComponent
メソッドを使用してこのコンテナのレイアウトからコンポーネントを削除するために、レイアウトマネージャーにも通知します。
このメソッドではレイアウトに関連する情報が変更されるため、コンポーネント階層が無効になります。コンテナがすでに表示されている場合は、変更を反映するために、あとで階層を検証する必要があります。
remove
、クラス: Container
comp
- 削除されるコンポーネントContainer.add(java.awt.Component)
, Container.invalidate()
, Container.validate()
, Container.remove(int)
public void removeAll()
removeLayoutComponent
メソッドを使用してこのコンテナのレイアウトからコンポーネントを削除するために、レイアウトマネージャーにも通知します。
このメソッドではレイアウトに関連する情報が変更されるため、コンポーネント階層が無効になります。コンテナがすでに表示されている場合は、変更を反映するために、あとで階層を検証する必要があります。
removeAll
、クラス: Container
Container.add(java.awt.Component)
, Container.remove(int)
, Container.invalidate()
protected boolean isPaintingOrigin()
true
を返し、JLayer
またはその上位オブジェクトのいずれかからペイントを実行します。isPaintingOrigin
、クラス: JComponent
JComponent.isPaintingOrigin()
public void paintImmediately(int x, int y, int w, int h)
LayerUI
が設定されている場合、機能を LayerUI.paintImmediately(int, int, int, int, JLayer)
メソッドに委譲します。paintImmediately
、クラス: JComponent
x
- ペイント領域の 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
、クラス: JComponent
g
- 保護対象の Graphics
オブジェクトJComponent.paint(java.awt.Graphics)
, ComponentUI
public boolean isOptimizedDrawingEnabled()
JLayer
は (JComponent
で) このメソッドのデフォルト実装をオーバーライドし、false
を返します。その結果、描画機構は JLayer
の子に直接メッセージを送るのではなく、JLayer
の paint
の実装を呼び出します。isOptimizedDrawingEnabled
、クラス: JComponent
public void propertyChange(PropertyChangeEvent evt)
propertyChange
、インタフェース: PropertyChangeListener
evt
- イベントソースと変更されたプロパティーを記述した 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
、インタフェース: Scrollable
Scrollable
public int getScrollableBlockIncrement(Rectangle visibleRect, int orientation, int direction)
Scrollable
を実装する場合、このメソッドは、その実装をビューコンポーネントに委譲します。getScrollableBlockIncrement
、インタフェース: Scrollable
visibleRect
- ビューポート内の可視のビュー領域orientation
- SwingConstants.VERTICAL または SwingConstants.HORIZONTAL。direction
- 上または左にスクロールする場合は 0 より小さく、下または右にスクロールする場合は 0 より大きい。Scrollable
public boolean getScrollableTracksViewportHeight()
false
を返して、ビューポートの高さがレイヤーの高さを決めないことを示します。
このレイヤーのビューコンポーネントが Scrollable
を実装する場合、このメソッドは、その実装をビューコンポーネントに委譲します。getScrollableTracksViewportHeight
、インタフェース: Scrollable
Scrollable
public boolean getScrollableTracksViewportWidth()
false
を返して、ビューポートの幅がレイヤーの幅を決めないことを示します。
このレイヤーのビューコンポーネントが Scrollable
を実装する場合、このメソッドは、その実装をビューコンポーネントに委譲します。getScrollableTracksViewportWidth
、インタフェース: Scrollable
Scrollable
public int getScrollableUnitIncrement(Rectangle visibleRect, int orientation, int direction)
JScrollPane
などのスクロールコンテナは、ユーザーがユニットスクロールを要求すると、このメソッドを使用します。
このレイヤーのビューコンポーネントが Scrollable
を実装する場合、このメソッドは、その実装をビューコンポーネントに委譲します。getScrollableUnitIncrement
、インタフェース: Scrollable
visibleRect
- ビューポート内の可視のビュー領域orientation
- SwingConstants.VERTICAL または SwingConstants.HORIZONTAL。direction
- 上または左にスクロールする場合は 0 より小さく、下または右にスクロールする場合は 0 より大きい。Scrollable
public void addNotify()
KeyboardAction
イベントリスナーで設定されます。このメソッドは、ツールキットによって内部的に呼び出されます。プログラムによって直接呼び出すべきではありません。public void removeNotify()
KeyboardAction
が削除されます。このメソッドは、ツールキットによって内部的に呼び出されます。プログラムによって直接呼び出すべきではありません。public void doLayout()
LayerUI
が設定されている場合、機能を LayerUI.doLayout(JLayer)
メソッドに委譲します。public AccessibleContext getAccessibleContext()
JLayer
に関連付けられた AccessibleContext を取得します。getAccessibleContext
、インタフェース: Accessible
getAccessibleContext
、クラス: JComponent
JLayer
に関連付けられた AccessibleContext。 バグまたは機能を送信
詳細な API リファレンスおよび開発者ドキュメントについては、Java SE のドキュメントを参照してください。そのドキュメントには、概念的な概要、用語の定義、回避方法、有効なコード例などの、開発者を対象にしたより詳細な説明が含まれています。
Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.