JComponentの表示状態
Total: 11021, Today: 1, Yesterday: 1
Posted by aterai at
Last-modified:
Summary
JComponentの表示状態が切り替わった時、そのisDisplayable()、isShowing()、isVisible()メソッドが返す値をテストします。
Screenshot

Advertisement
Source Code Examples
button.addHierarchyListener(new HierarchyListener() {
@Override public void hierarchyChanged(HierarchyEvent e) {
if ((e.getChangeFlags() & HierarchyEvent.SHOWING_CHANGED) != 0) {
printInfo("SHOWING_CHANGED");
} else if ((e.getChangeFlags() & HierarchyEvent.DISPLAYABILITY_CHANGED) != 0) {
printInfo("DISPLAYABILITY_CHANGED");
}
}
});
View in GitHub: Java, KotlinDescription
上記のサンプルでは、コンポーネント(JButton)にHierarchyListenerを追加して、表示状態などが切り替わった時のisDisplayable、isShowing、isVisibleメソッドの戻り値を調べています。
- 対象ボタンを作成してパネルに追加した状態で
JFrame#setVisible(true)を実行する前の場合:isDisplayable:falseisShowing:falseisVisible:true
frame.setVisible(true)後:HierarchyEvent.DISPLAYABILITY_CHANGEDisDisplayable:trueisShowing:falseisVisible:true
HierarchyEvent.SHOWING_CHANGEDisDisplayable:trueisShowing:true⇔falseisVisible:true
- コンポーネントが
JScrollPaneの表示領域外、またはフレームがアイコン化、別パネルの裏に隠れているといった場合:isDisplayable:trueisShowing:trueisVisible:true
- コンポーネントが親の
JTabbedPaneやCardLayoutを設定したJPanelなどの表示領域外(コンポーネントが非表示)の場合:isDisplayable:trueisShowing:falseisVisible:true
- コンポーネントが
setVisible(false)と設定された場合:isDisplayable:trueisShowing:falseisVisible:false
Reference
- Component#isDisplayable() (Java Platform SE 8)
- Component#isShowing() (Java Platform SE 8)
- Component#isVisible() (Java Platform SE 8)