JComboBoxなどの幅をカラム数で指定
Total: 13160, Today: 1, Yesterday: 2
Posted by aterai at
Last-modified:
Summary
JTextField,JPasswordField,JSpinner,JComboBoxの幅をカラム数で指定して比較しています。
Screenshot

Advertisement
Source Code Examples
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, KotlinDescription
上記のサンプルでは、要素が空のJComboBoxなどのカラム幅を同じ(20文字分の幅)にして(下二つはdefaultのまま)以下のような順番で並べています。
JTextField#setColumns(20)JPasswordField#setColumns(20)JSpinner#setColumns(20)JComboBox#setEditable(true)、JComboBox#setColumns(20)JComboBox#setEditable(true)、defaultJComboBox#setEditable(false)、default
- スクリーンショット左:
JDK 1.6.0、WindowsLookAndFeelsetColumns(20)を設定した入力欄の幅は揃っているJComboBoxでsetColumns(...)を適用していないデフォルトの状態では、モデル中のアイテムから最大の幅が適用される- モデルが空の場合はJComboBoxのセルサイズを決定するためのプロトタイプ値を設定するのようにプロトタイプ値を設定しておく必要がある
- スクリーンショット右:
JDK 1.5.0_10、WindowsLookAndFeel- 各入力欄の幅、高さ、余白が不揃い
JTextFieldの左内余白が広すぎるJComboBoxなどの左内余白が狭すぎる
- レイアウトマネージャーで工夫するか
setPreferredSize(Dimension)を使って幅を揃える必要がある
- 各入力欄の幅、高さ、余白が不揃い