TITLE:JComboBoxなどの幅をカラム数で指定

JComboBoxなどの幅をカラム数で指定

編集者:Terai Atsuhiro~

作成日:&date
更新日:2022-02-25 (金) 15:12:12
  • category: swing folder: SetColumns title: JComboBoxなどの幅をカラム数で指定 tags: [JTextField, JPasswordField, JSpinner, JComboBox] author: aterai pubdate: 2006-12-18T16:11:14+09:00 description: JTextField,JPasswordField,JSpinner,JComboBoxの幅をカラム数で指定して比較しています。 image: https://lh3.googleusercontent.com/_9Z4BYR88imo/TQTS72PP0tI/AAAAAAAAAjk/RRG_w2fJBtA/s800/SetColumns.png

概要

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

概要

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

サンプルコード

#spanend
#spanadd
JTextField field = new JTextField(20);
#spanend
#spanadd
JPasswordField passwd = new JPasswordField(20);
#spanend
#spanadd
JSpinner.DefaultEditor e = (JSpinner.DefaultEditor) spinner.getEditor();
#spanend
#spanadd
e.getTextField().setColumns(20);
#spanend
#spanadd
combo1.setEditable(true);
#spanend
#spanadd
Component c = combo1.getEditor().getEditorComponent();
#spanend
#spanadd
if (c instanceof JTextField) {
#spanend
  ((JTextField) c).setColumns(20);
#spanadd
}
#spanend
#spanadd
View in GitHub: Java, Kotlin

#screenshot

#screenshot(,screenshot_.png)

解説

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

サンプルコード

#spanend
 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);
#spandel
  • &jnlp;
  • &jar;
  • &zip;
  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

解説

上記のサンプルでは、要素が空のJComboBoxなどのカラム幅を同じにして*1、以下のような順番で並べています。
  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.0WindowsLookAndFeel
  • スクリーンショット右: JDK 1.5.0_10WindowsLookAndFeel
    • 各入力欄の幅、高さ、余白が不揃い
      • JTextFieldの左内余白が広すぎる
      • JComboBoxなどの左内余白が狭すぎる
    • レイアウトマネージャーで工夫するかsetPreferredSize(Dimension)を使って幅を揃える必要がある
スクリーンショットは、左(上)が 1.6.0(Java SE 6) で、右(下)が、1.5.0_10 で実行したものになっています(どちらもWindows LnF)。1.6.0 ではきれいに揃っていますが、1.5.0_10 などでは幅も高さも余白もガタガタなので、レイアウトマネージャーで工夫するか、setPreferredSize(Dimension)を使って幅を揃える方がよさそうです(JButtonなどの高さを変更せずに幅を指定)。

参考リンク

コメント

コメント