• title: JComboBoxなどの幅をカラム数で指定 tags: [JTextField, JPasswordField, JSpinner, JComboBox] author: aterai pubdate: 2006-12-18T16:11:14+09:00 description: JTextField,JPasswordField,JSpinner,JComboBoxの幅をカラム数で指定して比較しています。

概要

JTextField,JPasswordField,JSpinner,JComboBoxの幅をカラム数で指定して比較しています。

サンプルコード

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);
}
View in GitHub: Java, Kotlin

解説

上記のサンプルでは、要素が空のJComboBoxなどのカラム幅を同じにして(下二つはdefaultのまま)、以下のような順番で並べています。

  1. JTextField [setColumns(20)]
  2. JPasswordField [setColumns(20)]
  3. JSpinner [setColumns(20)]
  4. JComboBox [setEditable(true), setColumns(20)]
  5. JComboBox [setEditable(true), default]
  6. JComboBox [setEditable(false), default]

スクリーンショットは、左がJDK 1.6.0、右が、JDK 1.5.0_10で実行したものになっています(どちらもWindowsLookAndFeel)。1.6.0ではきれいに揃っていますが、1.5.0_10などでは幅も高さも余白もガタガタ(左の内余白もJTextFieldは広すぎ、JComboBoxなどは狭すぎるなどバラバラ)なので、レイアウトマネージャーで工夫するか、setPreferredSize(Dimension)を使って幅を揃える方がよさそうです(JButtonなどの高さを変更せずに幅を指定)。

参考リンク

コメント