概要

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などのカラム幅を同じ(20文字分の幅)にして(下二つはdefaultのまま)以下のような順番で並べています。

  1. JTextField#setColumns(20)
  2. JPasswordField#setColumns(20)
  3. JSpinner#setColumns(20)
  4. JComboBox#setEditable(true)JComboBox#setColumns(20)
  5. JComboBox#setEditable(true)default
  6. JComboBox#setEditable(false)default
  • スクリーンショット左: JDK 1.6.0WindowsLookAndFeel
  • スクリーンショット右: JDK 1.5.0_10WindowsLookAndFeel
    • 各入力欄の幅、高さ、余白が不揃い
      • JTextFieldの左内余白が広すぎる
      • JComboBoxなどの左内余白が狭すぎる
    • レイアウトマネージャーで工夫するかsetPreferredSize(Dimension)を使って幅を揃える必要がある

参考リンク

コメント