JListの任意のItemを選択不可にする

編集者:Terai Atsuhiro
作成日:2005-05-30
更新日:2023-03-09 (木) 18:58:30

概要

JListの任意のItemを選択不可にするようなレンダラーを設定します。

http://terai.xrea.jp/swing/disableditem/screenshot.png

サンプルコード

class MyCellRenderer1 extends DefaultListCellRenderer {
  public Component getListCellRendererComponent(JList list,
                                                Object value,
                                                int index,
                                                boolean isSelected,
                                                boolean cellHasFocus) {
    if(index==1) {
      Component c = super.getListCellRendererComponent(list,value,index,
                                                       false,false);
      c.setEnabled(false);
      return c ;
    }else{
      return super.getListCellRendererComponent(list,value,index,
                                                isSelected,cellHasFocus) ;
    }
  }
}
class MyCellRenderer2 extends DefaultListCellRenderer {
  public Component getListCellRendererComponent(JList list,
                                                Object value,
                                                int index,
                                                boolean isSelected,
                                                boolean cellHasFocus) {
    if(index<3 || index>7 || index==5) {
      Component c = super.getListCellRendererComponent(list,value,index,
                                                       false,false);
      c.setEnabled(false);
      return c ;
    }else{
      return super.getListCellRendererComponent(list,
                                                value,
                                                index,
                                                isSelected,
                                                cellHasFocus) ;
    }
  }
}

解説

上記のサンプルでは、レンダラーを切り替えることでItemの選択可、不可の状態を切り替えています。

コメント