swingコンポーネント->JSplitPane

JSplitPaneはディバイダ(仕切線)によって領域を上下あるいは左右に分けて、それぞれにコンポーネントを表示させます。ディバイダをドラックして各コンポーネントの領域の大きさを変更することができます。


コンストラクタ(抜粋)
JSplitPane()
 JSplitPaneオプジェクトを生成します。
JSplitPane(int  i)
 分割する方向ををint型の変数で指定してJSplitPaneオブジェクトを生成します。
 (デフォルトの分割は左右です。)
    JSplitPane.VARTICAL_SPLIT    
    JSplitPane.HORIZONTAL_SPLIT   
上下分割
左右分割
   ※それ以外を指定した場合、IllegalArgumentExceptionが発行されます。
JSplitPane(int i,Component left,Component right)
 分割する方向ををint型の変数で指定して2つのコンポーネントを左(または上)、右(または下)に指定してJSplitPaneオブジェクトを生成します。
JSplitPane(int  i,boolean con,Component left,Component right)
 分割する方向ををint型の変数で指定して2つのコンポーネントを左(または上)、右(または下)に指定してJSplitPaneオブジェクトを生成します。
 ※continuousLayoutはディバイダをドラッグするたびにスピリットペインに含まれるコンポーネントを更新するかどうかを制御します。
 conにtrueを指定すると、ディバイダをドラッグたびにそれにあわせてサイズが変更されるます。falseの場合はディバイダの位置が新しい位置に設定されるまでコンポーネントのサイズは更新されません。
メソッド(抜粋)
void setDividerLocation(int i)
 int型の変数iで指定した位置に仕切線を設定します。
void setDividerSize(int i)
 仕切線の太さをint型の変数iで指定したサイズに設定します。
void setOrientation(int i)
 分割する方向ををint型の変数で指定します。
void setContinuousLayout(boolean com)
 仕切線を動かすときにコンポーネントを再描画させるかどうかを設定します。
void setLeftComponent(Component,comp)
 コンポーネントcompを仕切線の左(上)に設定します。
void setTopComponent(Component,comp)
 コンポーネントcompを仕切線の上(左)に設定します。
void setRightComponent(Component,comp)
 コンポーネントcompを仕切線の右(下)に設定します。
void setBottomComponent(Component,comp)
 コンポーネントcompを仕切線の下(右)に設定します。
void addImpl(Component com,Object constraints,int index)
 指定したコンポーネントcomを追加します。
 constraints が左または上あるいは右または 下の子コンポーネントを判断し、そのコンポーネント  が以前に追加されている場合は、それを削除してから、その位置にcomを追加します。
 constraintsは以下の制約オブジェクトを指定します。
          JSplitPane.TOP
          JSplitPane.LEFT
          JSplitPane.BOTTOM
          JSplitPane.RIGHT
 それ以外は IllegalArgumentException を発行します。
  constraints オブジェクトが null の場合、利用可能な最初の位置にコンポーネントが
 追加されます 。
void remove(Component com)
 comで指定したコンポーネントを削除します。
void removeAll()
 全てのコンポーネントを削除します。

クリック

 
SampleSplit.java
import java.awt.*;  
import java.awt.event.*;  
import javax.swing.*;  
public class SampleSplit extends JFrame {  
   Container contentPane;  
  JSplitPane split;  
   LeftButton leftbtn = new LeftButton();  
   RightScroll rhtscl = new RightScroll();  
  public SampleSplit() {  
      super("SampleSplit");  
     addWindowAdapter(new WindowListener() {  
       public void windowClosing(WindowEvent e) {  
          System.exit(0);  
       }  
     });  
     contentPane = getContentPane();  
     contentPane.setLayout(new BorderLayout());  
     split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,true,leftbtn,rhtscl); ← @インスタンス
     生成
      contentPane.add("Center",split);  
     setSize(350,220);  
     setVisible(true);  
   }  
  }  
  public static void main(String[] args) {  
    SampleSplit myClass = new SampleSplit();  
  }  
  class LeftButton extends JPanel { ← ALeftButton
     クラス
      private int NUM = 3;  
      JButton[] btn = new JButton[NUM];  
      public LeftButton(){  
          setLayout(new GridLayout(3,1));  
           for(int i=0; i<NUM; i++){  
                 btn[i] = new JButton("ボタン"+i);  
                add(btn[i]);  
          }  
       }  
   }  
   class RightScroll extends JPanel { ← BRightScroll
     クラス
        JTextArea textArea = new JTextArea(10,20);  
        JScrollPane scl = new JScrollPane(textArea,  
                  ScrollPaneContents.VERTICAL_SCROLLBAR_ALWAYS,  
                  ScrollPaneContents.HORIZONTAL_SCROLLBAR_ALWAYS);  
         public RightScroll(){  
             add(scl);  
         }  
    }  
}  
@split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,
                           true,leftbtn,rhtscl);
 
JSplitPaneのインスタンスを生成しています。
 区切線を左右分割で、左側にLeftButtonを右側にRightScrollを設定しています。
 continuousLayoutをtrueに設定しているので、ディバイダ(仕切線)をドラッグするたびに
 コンポーネントが再描画されます。
Aclass LeftButton extends JPanel {}
 JPanelを継承したLeftButtonクラスです。ボタン3つが配置されています。
Bclass RightScroll extends JPanel {}
 JPanelを継承したRightScrollクラスです。スクロールペインがついたテキストエリアが配置されています。
もどる