• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JComboBoxにアイコンを表示
#navi(../)
#tags()
RIGHT:Posted by &author(aterai); at 2004-12-27
*JComboBoxにアイコンを表示 [#za138060]
JComboBoxを編集可にしてテキスト入力部分とリスト部分にアイコンを表示します。
---
title: JComboBoxにアイコンを表示
tags: [JComboBox, Icon, ListCellRenderer, MatteBorder]
author: aterai
pubdate: 2004-12-27T01:32:14+09:00
description: JComboBoxを編集可にしてテキスト入力部分とリスト部分にアイコンを表示します。
---
* 概要 [#za138060]
`JComboBox`を編集可にしてテキスト入力部分とリスト部分にアイコンを表示します。

-&jnlp;
-&jar;
-&zip;
#download(https://lh5.googleusercontent.com/_9Z4BYR88imo/TQTONfr7t7I/AAAAAAAAAcA/jNQyoEApJ1I/s800/IconComboBox.png)

//#screenshot
#ref(http://lh5.ggpht.com/_9Z4BYR88imo/TQTONfr7t7I/AAAAAAAAAcA/jNQyoEApJ1I/s800/IconComboBox.png)

**サンプルコード [#h76ab388]
* サンプルコード [#h76ab388]
#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);
}
}}

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

**参考リンク [#l13dc690]
-[[MatteBorderでラベル枠を修飾>Swing/MatteBorder]]
-[[JTextField内にアイコンを追加>Swing/IconTextField]]
-[[JComboBoxの内余白>Swing/PaddingComboBox]]
-[[JComboBoxのEditorComponentにJButtonを配置>Swing/ButtonInComboEditor]]
* 参考リンク [#l13dc690]
- [[MatteBorderでラベル枠を修飾>Swing/MatteBorder]]
- [[JTextField内にアイコンを追加>Swing/IconTextField]]
- [[JComboBoxの内余白>Swing/PaddingComboBox]]
- [[JComboBoxのEditorComponentにJButtonを配置>Swing/ButtonInComboEditor]]

**コメント [#z463c6ec]
* コメント [#z463c6ec]
#comment
#comment