• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JComboBoxなどの幅をカラム数で指定
#navi(../)
*JComboBoxなどの幅をカラム数で指定 [#ve8ef0dc]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:&date~
更新日:&lastmod;

#contents

**概要 [#hb1df07a]
JTextField,JPasswordField,JSpinner,JComboBox の幅をカラム数で指定して比較しています。

#screenshot
#screenshot(,screenshot_.png)

**サンプルコード [#ib603a1f]
#code{{
 JTextField field      = new JTextField(20);
 JPasswordField passwd = new JPasswordField(20);
 JSpinner.DefaultEditor e = (JSpinner.DefaultEditor)spinner.getEditor();
 e.getTextField().setColumns(20);
 combo1.setEditable(true);
 Component c = combo1.getEditor().getEditorComponent();
 if(c instanceof JTextField) ((JTextField)c).setColumns(20);

}}
-&jnlp;
-&jar;
-&zip;

**解説 [#fd934c68]
上記のサンプルでは、要素が空のJComboBoxなどを、以下のように設定して順に並べています。
+JTextField
+JPasswordField
+JSpinner
上記のサンプルでは、要素が空のJComboBoxなどのカラム幅を同じにして((下二つはdefaultのまま))、以下のような順番で並べています。
+JTextField [setColumns(20)]
+JPasswordField [setColumns(20)]
+JSpinner [setColumns(20)]
+JComboBox [setEditable(true), setColumns(20)]
+JComboBox [setEditable(true), default]
+JComboBox [setEditable(false), default]

スクリーンショットは、上が 1.6.0 で、下が、1.5.0_10 で実行したものになっています(どちらもWindows LnF)。
スクリーンショットは、左(上)が 1.6.0(Java SE 6) で、右(下)が、1.5.0_10 で実行したものになっています(どちらもWindows LnF)。1.6.0 ではきれいに揃っていますが、1.5.0_10 などでは幅も高さも余白もガタガタなので、レイアウトマネージャーで工夫するか、setPreferredSize(Dimension)を使って幅を揃える方がよさそうです([[JButtonなどの高さを変更せずに幅を指定>Swing/ButtonWidth]])。

1.6.0 ではきれいに揃っていますが、1.5.0_10 などでは、レイアウトマネージャーで工夫するか、setPreferredSize(Dimension)を使って幅を揃える方がよさそうです([[JButtonなどの高さを変更せずに幅を指定>ButtonWidth]])。

//**参考リンク
**コメント [#w970c125]
#comment