Swing/ShowingDisplayableVisible のバックアップ(No.6)
- バックアップ一覧
- 差分 を表示
- 現在との差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- Swing/ShowingDisplayableVisible へ行く。
- 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
メソッドが返す値をテストします。
Screenshot
Advertisement
サンプルコード
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, Kotlin解説
上記のサンプルでは、コンポーネント(JButton
)にHierarchyListener
を追加して、表示状態が切り替わった時のisDisplayable
、isShowing
、isVisible
を調べています。
- 対象ボタンを作成してパネルに追加した状態で、
frame.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
の表示領域にないなど(親コンポーネントが非表示)の場合:isDisplayable
:true
isShowing
:false
isVisible
:true
- コンポーネントが
setVisible(false)
と設定された場合:isDisplayable
:true
isShowing
:false
isVisible
:false