TITLE:SpringLayoutの使用

SpringLayoutの使用

編集者:Terai Atsuhiro
作成日:2006-06-15
更新日:2021-08-20 (金) 14:02:05

概要

レイアウトにSpringLayoutを使用します。

#screenshot

サンプルコード

 public void initLayout() {
   SpringLayout layout = new SpringLayout();
   Insets i = panel.getInsets();
   int w = panel.getWidth()  - i.left - i.right;
   int h = panel.getHeight() - i.top  - i.bottom;
 
   l1.setPreferredSize(new Dimension( w*90/100, h*55/100 ) );
   l2.setPreferredSize(new Dimension( w*40/100, h*30/100 ) );
 
   layout.putConstraint(SpringLayout.WEST,  l1, w*5/100,
                        SpringLayout.WEST,  panel);
   layout.putConstraint(SpringLayout.NORTH, l1, h*5/100,
                        SpringLayout.NORTH, panel);
   layout.putConstraint(SpringLayout.WEST,  l2, w*50/100,
                        SpringLayout.WEST,  panel);
   //layout.putConstraint(SpringLayout.WEST, l2, 0, SpringLayout.WEST, l1);
   layout.putConstraint(SpringLayout.SOUTH, l2, -h*5/100,
                        SpringLayout.SOUTH, panel);
 
   panel.setLayout(layout);
   panel.revalidate();
 }
  • &jnlp;
  • &jar;
  • &zip;

解説

上記のサンプルでは、SpringLayoutを使って2つのラベルをパネル内にレイアウトしています。

パネルのサイズが変更されるたびに、各ラベルのサイズとパネルからの距離が一定の割合になるように設定し直しています(ただしパネルの余白は無視)。

  • JLabel1
    • 幅はパネルの90%、高さは55%
    • パネルと自身のWESTからの距離5%、パネルと自身のNORTHからの距離5%
  • JLabel2
    • 幅はパネルの40%、高さは30%
    • パネルと自身のWESTからの距離50%、パネルと自身のSOUTHからの距離-5%

SpringLayoutでは原点は左上で、右方向、下方向に正の値を取る為、例えばパネルの南辺からコンポーネントの南辺までの距離を指定する場合は、layout.putConstraintする際にマイナスの値を指定する必要があります。

距離を0にすることも可能で、例えばサンプルコードのコメントアウトされたような指定をすると、ラベル1、2を左揃えで並べることができます。

コメント