Java
 Computer >> コンピューター >  >> プログラミング >> Java

【Java】JSplitPaneの左・右ペインをプログラムで非表示にする方法

JSplitPaneJComponentクラスのサブクラスであり、2つのコンポーネントを1つのペイン内に水平方向または垂直方向に並べて配置できるSwingコンポーネントです。各コンポーネントの表示領域は、実行時にユーザーがドラッグして自由に調整することもできます。

JSplitPaneの重要なメソッドとしては、remove()removeAll()resetToPreferredSizes()setDividerLocation()などが挙げられます。また、JSplitPaneはPropertyChangeListenerインターフェースを利用したイベント通知にも対応しています。

本記事では、ボタンをクリックすることで左ペインまたは右ペインをプログラム的に非表示にする方法を解説します。具体的には、左右それぞれのボタンに対してアクションリスナーを登録し、クリックされたボタンに応じてペインの表示・非表示を切り替えます。

実装例

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class JSplitPaneHideTest extends JFrame {
    private JButton leftBtn, rightBtn;
    private JSplitPane jsp;

    public JSplitPaneHideTest() {
        setTitle("JSplitPaneHide Test");
        leftBtn = new JButton("Left Button");
        rightBtn = new JButton("Right Button");
        jsp = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, leftBtn, rightBtn);
        jsp.setResizeWeight(0.5);

        // 左ペインまたは右ペインを非表示にする処理
        ActionListener actionListener = new ActionListener() {
            private int loc = 0;

            public void actionPerformed(ActionEvent ae) {
                JButton source = (JButton) ae.getSource();
                if (jsp.getLeftComponent().isVisible()
                        && jsp.getRightComponent().isVisible()) {
                    loc = jsp.getDividerLocation();
                    jsp.setDividerSize(0);
                    jsp.getLeftComponent().setVisible(source == leftBtn);
                    jsp.getRightComponent().setVisible(source == rightBtn);
                } else {
                    jsp.getLeftComponent().setVisible(true);
                    jsp.getRightComponent().setVisible(true);
                    jsp.setDividerLocation(loc);
                    jsp.setDividerSize((Integer) UIManager.get("SplitPane.dividerSize"));
                }
            }
        };
        rightBtn.addActionListener(actionListener);
        leftBtn.addActionListener(actionListener);

        add(jsp, BorderLayout.CENTER);
        setSize(400, 300);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        setVisible(true);
    }

    public static void main(String[] args) {
        new JSplitPaneHideTest();
    }
}

コードのポイント

  • setResizeWeight(0.5): ウィンドウサイズ変更時に、余った領域を左右のペインに均等(50%ずつ)に配分します。
  • getDividerLocation(): 現在のディバイダー(仕切り)の位置を取得し、変数locに保存しておきます。これにより、再表示時に元の位置へ復元できます。
  • setDividerSize(0): ディバイダーの幅を0にすることで、片方のペインを隠している間は仕切りが見えないようにします。
  • setVisible(): クリックされたボタンと一致する側のコンポーネントだけを表示し、反対側を非表示にします。
  • UIManager.get("SplitPane.dividerSize"): Look & Feelのデフォルトのディバイダーサイズを取得し、両ペイン復帰時に元の幅へ戻します。

実行結果

初期状態では、左右のボタンがディバイダーを挟んで表示されます。

【Java】JSplitPaneの左・右ペインをプログラムで非表示にする方法


「Left Button」をクリックすると、右ペインのみが表示され、左ペインとディバイダーは非表示になります。

【Java】JSplitPaneの左・右ペインをプログラムで非表示にする方法


再度同じボタンをクリックすると、保存しておいたディバイダー位置に戻り、両方のペインが再表示されます。

【Java】JSplitPaneの左・右ペインをプログラムで非表示にする方法

  1. JavaのJPopupMenuで右クリックメニュー(コンテキストメニュー)を実装する方法

    Java SwingのJPopupMenuを使うと、マウスの右ボタンがクリックされたタイミングで、画面上の任意の場所にポップアップメニュー(コンテキストメニュー)を表示できます。 JPopupMenuの基本 ポップアップメニューは、インボーカー(invoker)と呼ばれる基盤となるコンポーネントに関連付けられた自由配置型のメニューです。 多くの場合、ポップアップメニューは特定のコンポーネントに紐付けられ、状況に応じた選択肢(コンテキスト依存の操作)を表示するために使用されます。 ポップアップメニューを作成するにはJPopupMenuクラスを使用し、通常のメニューと同じようにJMenuItem

  2. JavaのJToggleButton実装ガイド:ON/OFF切替ボタンの作り方を解説

    JToggleButtonとは JToggleButtonはAbstractButtonを拡張したクラスで、クリックするたびにONとOFFが切り替わるトグルボタンを実現するために使用されます。通常のボタンと異なり、押した状態を保持できるのが特徴です。 JToggleButtonの主な特徴 最初に押されたときは押し込まれた状態のままとなり、もう一度押してはじめて元の状態(押されていない状態)に戻ります。 ボタンが押されるたびにActionEventが発生します。 さらに、JToggleButtonはItemEventも発生させることができます。このイベントは、選択状態という概念を持つコンポー