Swing/SetColumns のバックアップの現在との差分(No.6)
TITLE:JComboBoxなどの幅をカラム数で指定
JComboBoxなどの幅をカラム数で指定
Posted by terai at 2006-12-18- 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:
概要
JTextField
,JPasswordField
,JSpinner
,JComboBox
の幅をカラム数で指定して比較しています。
Screenshot
Advertisement
概要
JTextField,JPasswordField,JSpinner,JComboBox の幅をカラム数で指定して比較しています。- &jnlp;
- &jar;
- &zip;
#screenshot
サンプルコード
#spanend
#spandel
JTextField field = new JTextField(20);
#spanend
#spanadd
* サンプルコード [#sourcecode]
#spanend
#spanadd
#code(link){{
#spanend
#spanadd
JTextField field = new JTextField(20);
#spanend
JPasswordField passwd = new JPasswordField(20);
#spandel
JSpinner.DefaultEditor e = (JSpinner.DefaultEditor)spinner.getEditor();
#spanend
#spanadd
JSpinner.DefaultEditor e = (JSpinner.DefaultEditor) spinner.getEditor();
#spanend
e.getTextField().setColumns(20);
combo1.setEditable(true);
Component c = combo1.getEditor().getEditorComponent();
#spandel
if(c instanceof JTextField) ((JTextField)c).setColumns(20);
#spanend
#spanadd
if (c instanceof JTextField) {
#spanend
((JTextField) c).setColumns(20);
#spanadd
}
#spanend
解説
上記のサンプルでは、要素が空のJComboBoxなどのカラム幅を同じにして*1、以下のような順番で並べています。- JTextField [setColumns(20)]
- JPasswordField [setColumns(20)]
- JSpinner [setColumns(20)]
- JComboBox [setEditable(true), setColumns(20)]
- JComboBox [setEditable(true), default]
- JComboBox [setEditable(false), default]
解説
上記のサンプルでは、要素が空のJComboBox
などのカラム幅を同じ(20
文字分の幅)にして(下二つはdefault
のまま)以下のような順番で並べています。
スクリーンショットは、左(上)が 1.6.0(Java SE 6) で、右(下)が、1.5.0_10 で実行したものになっています(どちらもWindows L&F)。1.6.0 ではきれいに揃っていますが、1.5.0_10 などでは幅も高さも余白もガタガタ*2なので、レイアウトマネージャーで工夫するか、setPreferredSize(Dimension)を使って幅を揃える方がよさそうです(JButtonなどの高さを変更せずに幅を指定)。
-
JTextField#setColumns(20)
-
JPasswordField#setColumns(20)
-
JSpinner#setColumns(20)
-
JComboBox#setEditable(true)
、JComboBox#setColumns(20)
-
JComboBox#setEditable(true)
、default
-
JComboBox#setEditable(false)
、default
参考リンク
- JButtonなどの高さを変更せずに幅を指定
- スクリーンショット左:
JDK 1.6.0
、WindowsLookAndFeel
-
setColumns(20)
を設定した入力欄の幅は揃っている -
JComboBox
でsetColumns(...)
を適用していないデフォルトの状態では、モデル中のアイテムから最大の幅が適用される- モデルが空の場合はJComboBoxのセルサイズを決定するためのプロトタイプ値を設定するのようにプロトタイプ値を設定しておく必要がある
-
- スクリーンショット右:
JDK 1.5.0_10
、WindowsLookAndFeel
- 各入力欄の幅、高さ、余白が不揃い
-
JTextField
の左内余白が広すぎる -
JComboBox
などの左内余白が狭すぎる
-
- レイアウトマネージャーで工夫するか
setPreferredSize(Dimension)
を使って幅を揃える必要がある
- 各入力欄の幅、高さ、余白が不揃い