Swing/IconComboBox のバックアップの現在との差分(No.16)
- バックアップ一覧
- 差分 を表示
- 現在との差分 - Visual を表示
- ソース を表示
- バックアップ を表示
- Swing/IconComboBox へ行く。
- 1 (2004-12-27 (月) 01:32:14)
- 2 (2004-12-27 (月) 03:24:01)
- 3 (2005-04-28 (木) 04:33:07)
- 4 (2005-06-08 (水) 16:12:34)
- 5 (2005-06-27 (月) 06:47:31)
- 6 (2005-10-19 (水) 20:02:24)
- 7 (2006-02-27 (月) 16:02:57)
- 8 (2006-09-08 (金) 14:48:59)
- 9 (2007-05-28 (月) 06:30:36)
- 10 (2009-08-20 (木) 16:32:34)
- 11 (2009-09-06 (日) 12:31:29)
- 12 (2013-04-14 (日) 00:44:03)
- 13 (2015-03-17 (火) 15:01:21)
- 14 (2015-03-17 (火) 15:06:33)
- 15 (2016-12-28 (水) 17:18:41)
- 16 (2017-12-10 (日) 22:12:47)
- 17 (2019-12-05 (木) 15:41:28)
- 18 (2021-06-08 (火) 11:23:34)
- 追加された行はこの色です。
- 削除された行はこの色です。
--- category: swing folder: IconComboBox title: JComboBoxにアイコンを表示 tags: [JComboBox, JTextField, Icon, ListCellRenderer, MatteBorder, JLabel] author: aterai pubdate: 2004-12-27T01:32:14+09:00 description: JComboBoxを編集可にしてテキスト入力部分とリスト部分にアイコンを表示します。 image: https://lh5.googleusercontent.com/-4rGEnYRGuys/VQfEDJHomCI/AAAAAAAAN0o/vja8KE3Cm-o/s800/IconComboBox.png --- * 概要 [#summary] `JComboBox`を編集可にしてテキスト入力部分とリスト部分にアイコンを表示します。 #download(https://lh5.googleusercontent.com/-4rGEnYRGuys/VQfEDJHomCI/AAAAAAAAN0o/vja8KE3Cm-o/s800/IconComboBox.png) * サンプルコード [#sourcecode] #code(link){{ private static Border makeIconBorder(JComponent c, ImageIcon i) { int iw = i.getIconWidth(); Border b1 = BorderFactory.createMatteBorder(0, iw, 0, 0, i); Border b2 = BorderFactory.createEmptyBorder(0, 5, 0, 0); Border b3 = BorderFactory.createCompoundBorder(b1, b2); return BorderFactory.createCompoundBorder(c.getBorder(), b3); } }} * 解説 [#explanation] 上記のサンプルでは、`JLabel#setIcon(...)`でアイコンを追加し、リスト内の各項目にアイコンが表示されるように設定した`ListCellRenderer`を`JComboBox`に設定しています。 上記のサンプルでは、リスト内の各項目に`JLabel#setIcon(...)`メソッドでアイコンを追加した`ListCellRenderer`を`JComboBox`に設定しています。 - `setEditable(false)` -- `JComboBox`の文字列入力欄が編集不可の場合、リスト内の各項目だけでなく、`JComboBox`にもアイコンが表示される -- `JComboBox`が編集不可の場合、リスト内の各項目だけでなく`JComboBox`にもアイコンが表示される - `setEditable(true)` -- 上: --- `JComboBox`の文字列入力欄には、アイコンが表示されない --- `JComboBox`の文字列入力欄にはアイコンが表示されない -- 中: --- `combo.getEditor().getEditorComponent()`で取得した`JTextField`に`MatteBorder`を追加して、文字列入力欄にアイコンを表示 --- `combo.getEditor().getEditorComponent()`で取得した`JTextField`に`MatteBorder`を追加して文字列入力欄にアイコンを表示 -- 下: --- `combo.getEditor().getEditorComponent()`で取得した`JTextField`にアイコンを追加した`JLabel`を追加 --- アイコン(`JLabel`)が文字列と重ならないように、`JTextField`にはその幅だけ余白をとるように設定 --- アイコン(`JLabel`)が文字列と重ならないように`JTextField`にはその幅だけ余白をとるように設定 * 参考リンク [#reference] - [[MatteBorderでラベル枠を修飾>Swing/MatteBorder]] - [[JTextField内にアイコンを追加>Swing/IconTextField]] - [[JComboBoxの内余白>Swing/PaddingComboBox]] - [[JComboBoxのEditorComponentにJButtonを配置>Swing/ButtonInComboEditor]] * コメント [#comment] #comment #comment