java: Componentを全て無効化する【swing】

プログラミング
スポンサーリンク




こんにちは、おみです。

FrameやPanelに貼り付けてある全てのComponentの有効状態を更新するメソッドを作成しました。

スポンサーリンク

Javaバージョン

Java8

 

ソースコード

  // ------------------------------------------
  // 関 数 名:activeStateChange
  // 処理概要:Componentの有効状態を一気に更新する
  //  引 数 : component ... 状態を更新したい部品
  //         flag      ... 更新後の有効状態     
  // ------------------------------------------
    public static void activeStateChange(Component component, boolean flag) {

        // スクロールパネル内の要素を更新する
        if (component instanceof JScrollPane) {
            for (Component c : getScrollPanelComponents((JScr
ollPane)(component))) {
                // 再帰処理
                activeStateChange(c, flag);
            }
        }

        if (component instanceof JFrame) {
            // フレームである場合の処理
            JFrame f = (JFrame)(component);
            for (Component c : f.getContentPane().getComponen
ts()) {
                // 対象がパネルであるかを判定
                if (c instanceof JPanel) {
                    // 再帰処理
                    activeStateChange(c, flag);
                } else {
                    // 活性状態を更新
                    c.setEnabled(false);
                }
            }
        } else if (component instanceof JPanel) {
            // パネルである場合の処理
            JPanel p = (JPanel)(component);
            for (Component c : p.getComponents()) {
                // 対象がパネルであるかを判定
                if (c instanceof JPanel) {
                    // 再帰処理
                    activeStateChange((JPanel)(c), flag);
                } else {
                    // 活性状態を更新
                    c.setEnabled(flag);
                }
            }
        }
    }



  // ------------------------------------------
  // 関 数 名:getScrollPanelComponents
  // 処理概要:スクロールパネル内の要素を取得する 
  //  引  数: sp ... 要素を取得したいスクロールパネル
  // ------------------------------------------
    public static Component[] getScrollPanelComponents(JScro
llPane sp) {

        for (Component c : sp.getComponents()) {
            if (c instanceof JViewport) {
                JViewport jp = (JViewport)(c);
                return jp.getComponents();
            }
        }

        return null;

    }

コメント

タイトルとURLをコピーしました