TITLE:JComponentの表示状態

Posted by at 2009-04-20

JComponentの表示状態

JComponentの表示状態をテストします。

  • &jnlp;
  • &jar;
  • &zip;
ShowingDisplayableVisible.png

サンプルコード

button.addHierarchyListener(new HierarchyListener() {
  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を調べています。

  • 開始時: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

コメント