Swing/ShowingDisplayableVisible のバックアップの現在との差分(No.1)
TITLE:JComponentの表示状態
Posted by aterai at 2009-04-20
JComponentの表示状態
JComponentの表示状態をテストします。- category: swing folder: ShowingDisplayableVisible title: JComponentの表示状態 tags: [JComponent, HierarchyListener, JScrollPane, JTabbedPane, CardLayout] author: aterai pubdate: 2009-04-20T14:24:13+09:00 description: JComponentの表示状態が切り替わった時、そのisDisplayable、isShowing、isVisibleメソッドが返す値をテストします。 image:
概要
JComponent
の表示状態が切り替わった時、そのisDisplayable()
、isShowing()
、isVisible()
メソッドが返す値をテストします。
- &jnlp;
- &jar;
- &zip;
Screenshot
Advertisement
サンプルコード
サンプルコード
button.addHierarchyListener(new HierarchyListener() {
public void hierarchyChanged(HierarchyEvent e) {
if((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED)!=0) {
@Override public void hierarchyChanged(HierarchyEvent e) {
if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0) {
printInfo("SHOWING_CHANGED");
}else if((e.getChangeFlags() & HierarchyEvent.DISPLAYABILITY_CHANGED)!=0) {
} else if ((e.getChangeFlags() & HierarchyEvent.DISPLAYABILITY_CHANGED) != 0) {
printInfo("DISPLAYABILITY_CHANGED");
}
}
});
View in GitHub: Java, Kotlin解説
上記のサンプルでは、コンポーネント(JButton)にHierarchyListenerを追加して、表示状態が切り替わった時のisDisplayable、isShowing、isVisibleを調べています。解説
上記のサンプルでは、コンポーネント(JButton
)にHierarchyListener
を追加して、表示状態などが切り替わった時のisDisplayable
、isShowing
、isVisible
メソッドの戻り値を調べています。
- 開始時:HierarchyEvent.DISPLAYABILITY_CHANGED
- isDisplayable:true
- isShowing:false
- isVisible:true
- 対象ボタンを作成してパネルに追加した状態で
JFrame#setVisible(true)
を実行する前の場合:-
isDisplayable
:false
-
isShowing
:false
-
isVisible
:true
-
-
frame.setVisible(true)
後:HierarchyEvent.DISPLAYABILITY_CHANGED
-
isDisplayable
:true
-
isShowing
:false
-
isVisible
:true
-
-
HierarchyEvent.SHOWING_CHANGED
-
isDisplayable
:true
-
isShowing
:true
⇔false
-
isVisible
:true
-
- コンポーネントが
JScrollPane
の表示領域外、またはフレームがアイコン化、別パネルの裏に隠れているといった場合:-
isDisplayable
:true
-
isShowing
:true
-
isVisible
:true
-
- コンポーネントが親の
JTabbedPane
やCardLayout
を設定したJPanel
などの表示領域外(コンポーネントが非表示)の場合:-
isDisplayable
:true
-
isShowing
:false
-
isVisible
:true
-
- コンポーネントが
setVisible(false)
と設定された場合:-
isDisplayable
:true
-
isShowing
:false
-
isVisible
:false
-
- HierarchyEvent.SHOWING_CHANGED
- isDisplayable:true
- isShowing:true<->false
- isVisible:true
参考リンク
- Component#isDisplayable() (Java Platform SE 8)
- Component#isShowing() (Java Platform SE 8)
- Component#isVisible() (Java Platform SE 8)
- コンポーネントがJScrollPaneの表示領域にない、フレームがアイコン化、別パネルの裏に隠れているといった場合
- isDisplayable:true
- isShowing:true
- isVisible:true
- コンポーネントがJTabbedPaneやCardLayoutの表示領域にないなど(親コンポーネントが非表示)の場合
- isDisplayable:true
- isShowing:false
- isVisible:true
- コンポーネントがsetVisible(false)と設定された場合
- isDisplayable:true
- isShowing:false
- isVisible:false