プログラマメモ2 - programmer no memo2

ちょっとした工夫、JListのレンダラー 2007/11/27

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;
}
}

: