• title: JComboBoxにアイコンを表示 tags: [JComboBox, Icon, ListCellRenderer, MatteBorder] author: aterai pubdate: 2004-12-27T01:32:14+09:00 description: JComboBoxを編集可にしてテキスト入力部分とリスト部分にアイコンを表示します。

概要

JComboBoxを編集可にしてテキスト入力部分とリスト部分にアイコンを表示します。

スクリーンショット

IconComboBox.png

サンプルコード

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, Kotlin

解説

  • 一番上
    • デフォルトのListCellRendererを使用するJComboBoxです。
  • 上から二番目
    • JComboBoxフィールドが編集不可の場合、ListCellRendererを実装することでアイコン表示することができます。
  • 下から二番目
    • JComboBoxフィールドが編集可の場合、ListCellRendererを実装しても、Editor部分はアイコン表示されません。
  • 一番下
    • JComboBoxフィールドが編集可の場合でも、MatteBorderを使用することでエディタ部分にもアイコンを表示することができます。

参考リンク

コメント