• 追加された行はこの色です。
  • 削除された行はこの色です。
TITLE:JListを選択不可にする
#navi(../)
*JListを選択不可にする [#j04d5de5]
>編集者:[[Terai Atsuhiro>terai]]~
作成日:2005-03-14~
更新日:&lastmod;
Posted by [[terai]] at 2005-03-14

#contents

**概要 [#o1706f9f]
JListが選択不可に見えるようなレンダラーを設定します。
JListを選択出来ないように設定します。

-&jnlp;
-&jar;
-&zip;

#screenshot

**サンプルコード [#g97b104e]
#code{{
class MyCellRenderer implements ListCellRenderer {
list2.setFocusable(false);
list2.setSelectionModel(new DefaultListSelectionModel() {
  public boolean isSelectedIndex(int index) {
    return false;
  }
});

class EmptySelectionRenderer implements ListCellRenderer {
  private final ListCellRenderer renderer;
  public MyCellRenderer(ListCellRenderer renderer) {
  public EmptySelectionRenderer(ListCellRenderer renderer) {
    this.renderer = renderer;
  }
  public Component getListCellRendererComponent(
                     JList list, Object value, int index, 
                     boolean isSelected, boolean cellHasFocus) {
    return renderer.getListCellRendererComponent(
                        list, value, index, false, false);
  }
}
}}
-&jnlp;
-&jar;
-&zip;

**解説 [#a0f3861e]
-左
--JList#setEnabled(false)で選択不可にしています。
-中
--フォーカス無し、ListSelectionModel#isSelectedIndexが常にfalseなセレクションモデルを設定して、選択不可にしています。
--JList#setFocusable(false)でフォーカス無し、かつListSelectionModel#isSelectedIndexが常にfalseなセレクションモデルを設定して、選択不可にしています。
-右
--常に各セルを選択状態でもフォーカスも無いものとして描画するセルレンダラーを設定して、選択不可のように見せかけています。

//**参考リンク
**コメント [#b5251fbd]
#comment