• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JComponentの表示状態
#navi(../)
#tags()
RIGHT:Posted by &author(aterai); at 2009-04-20
*JComponentの表示状態 [#t8509340]
JComponentの表示状態をテストします。
---
title: JComponentの表示状態
tags: [JComponent, HierarchyListener, JScrollPane, JTabbedPane, CardLayout]
author: aterai
pubdate: 2009-04-20T14:24:13+09:00
description: JComponentの表示状態をテストします。
---
* 概要 [#t8509340]
`JComponent`の表示状態をテストします。

-&jnlp;
-&jar;
-&zip;
#download(https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTS-a1ZnQI/AAAAAAAAAjo/jB4n-1WmEIs/s800/ShowingDisplayableVisible.png)

//#screenshot
#ref(http://lh3.ggpht.com/_9Z4BYR88imo/TQTS-a1ZnQI/AAAAAAAAAjo/jB4n-1WmEIs/s800/ShowingDisplayableVisible.png)

**サンプルコード [#e72673c3]
* サンプルコード [#e72673c3]
#code(link){{
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");
    }
  }
});
}}

**解説 [#c904a45d]
上記のサンプルでは、コンポーネント(JButton)にHierarchyListenerを追加して、表示状態が切り替わった時のisDisplayable、isShowing、isVisibleを調べています。
* 解説 [#c904a45d]
上記のサンプルでは、コンポーネント(`JButton`)に`HierarchyListener`を追加して、表示状態が切り替わった時の`isDisplayable`、`isShowing`、`isVisible`を調べています。

-開始時:HierarchyEvent.DISPLAYABILITY_CHANGED
--isDisplayable:true
--isShowing:false
--isVisible:true
- 開始時: `HierarchyEvent.DISPLAYABILITY_CHANGED`
-- `isDisplayable`: `true`
-- `isShowing`: `false`
-- `isVisible`: `true`

-HierarchyEvent.SHOWING_CHANGED
--isDisplayable:true
--isShowing:true<->false
--isVisible:true
- `HierarchyEvent.SHOWING_CHANGED`
-- `isDisplayable`: `true`
-- `isShowing`: `true`⇔`false`
-- `isVisible`: `true`

-コンポーネントがJScrollPaneの表示領域にない、フレームがアイコン化、別パネルの裏に隠れているといった場合
--isDisplayable:true
--isShowing:true
--isVisible:true
- コンポーネントが`JScrollPane`の表示領域にない、フレームがアイコン化、別パネルの裏に隠れているといった場合
-- `isDisplayable`: `true`
-- `isShowing`: `true`
-- `isVisible`: `true`

-コンポーネントがJTabbedPaneやCardLayoutの表示領域にないなど(親コンポーネントが非表示)の場合
--isDisplayable:true
--isShowing:false
--isVisible:true
- コンポーネントが`JTabbedPane`や`CardLayout`の表示領域にないなど(親コンポーネントが非表示)の場合
-- `isDisplayable`: `true`
-- `isShowing`: `false`
-- `isVisible`: `true`

-コンポーネントがsetVisible(false)と設定された場合
--isDisplayable:true
--isShowing:false
--isVisible:false
- コンポーネントが`setVisible(false)`と設定された場合
-- `isDisplayable`: `true`
-- `isShowing`: `false`
-- `isVisible`: `false`

//**参考リンク
**コメント [#s4735b0e]
//* 参考リンク
* コメント [#s4735b0e]
#comment
#comment