Swing/ShowingDisplayableVisible のバックアップの現在との差分(No.1)
- バックアップ一覧
- 差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/ShowingDisplayableVisible へ行く。
- 追加された行はこの色です。
- 削除された行はこの色です。
TITLE:JComponentの表示状態 #navi(../) RIGHT:Posted by &author(aterai); at 2009-04-20 *JComponentの表示状態 [#t8509340] 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: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTS-a1ZnQI/AAAAAAAAAjo/jB4n-1WmEIs/s800/ShowingDisplayableVisible.png --- * 概要 [#summary] `JComponent`の表示状態が切り替わった時、その`isDisplayable()`、`isShowing()`、`isVisible()`メソッドが返す値をテストします。 -&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] * サンプルコード [#sourcecode] #code(link){{ 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"); } } }); }} **解説 [#c904a45d] 上記のサンプルでは、コンポーネント(JButton)にHierarchyListenerを追加して、表示状態が切り替わった時のisDisplayable、isShowing、isVisibleを調べています。 * 解説 [#explanation] 上記のサンプルでは、コンポーネント(`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 * 参考リンク [#reference] - [https://docs.oracle.com/javase/jp/8/docs/api/java/awt/Component.html#isDisplayable-- Component#isDisplayable() (Java Platform SE 8)] - [https://docs.oracle.com/javase/jp/8/docs/api/java/awt/Component.html#isShowing-- Component#isShowing() (Java Platform SE 8)] - [https://docs.oracle.com/javase/jp/8/docs/api/java/awt/Component.html#isVisible-- 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 //**参考リンク **コメント [#s4735b0e] * コメント [#comment] #comment #comment