JComboBoxにアイコンを表示
Total: 10863, Today: 1, Yesterday: 0
Posted by aterai at
Last-modified:
Summary
JComboBoxを編集可にしてテキスト入力部分とリスト部分にアイコンを表示します。
Screenshot

Advertisement
Source Code Examples
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);
}
View in GitHub: Java, KotlinDescription
上記のサンプルでは、リスト内の各項目にJLabel#setIcon(...)メソッドでアイコンを追加したListCellRendererをJComboBoxに設定しています。
setEditable(false)JComboBoxが編集不可の場合、リスト内の各項目だけでなくJComboBoxにもアイコンが表示される
setEditable(true)- 上:
JComboBoxの文字列入力欄にはアイコンが表示されない
- 中:
combo.getEditor().getEditorComponent()で取得したJTextFieldにMatteBorderを追加して文字列入力欄にアイコンを表示
- 下:
combo.getEditor().getEditorComponent()で取得したJTextFieldにアイコンを追加したJLabelを追加- アイコン(
JLabel)が文字列と重ならないようにJTextFieldにはその幅だけ余白をとるように設定
- 上: