ちょっとした工夫、JListのレンダラー
2007/11/27
java
swing
javaです。swingです。
JListのリストの見え方を少しだけ変えたい場合、ListCellRendererをごりごり実装するのではなく、デフォルトのレンダラーからコンポーネントを取得してそのコンポーネントを返すと、楽だという話です。
listからgetCellRendererしてデフォルトのレンダラーを取得して、オリジナルのレンダラーにそのデフォルトのレンダラーをもたせてます。
static class MyRenderer implements ListCellRenderer {
ListCellRenderer defaultRenderer;
public MyRenderer(ListCellRenderer defaultRenderer) {
this.defaultRenderer = defaultRenderer;
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
Component component = this.defaultRenderer
.getListCellRendererComponent(list, value, index,
isSelected, cellHasFocus);
/*
* ここでcomponentに対する操作を行います。
*/
return component;
}
}
ListCellRenderer defaultRenderer;
public MyRenderer(ListCellRenderer defaultRenderer) {
this.defaultRenderer = defaultRenderer;
}
public Component getListCellRendererComponent(JList list, Object value,
int index, boolean isSelected, boolean cellHasFocus) {
Component component = this.defaultRenderer
.getListCellRendererComponent(list, value, index,
isSelected, cellHasFocus);
/*
* ここでcomponentに対する操作を行います。
*/
return component;
}
}
: