2017-05-19 9 views
0

私がしようとしてきたことは、チェックボックス付きのJListです。私は複数の項目を選択することができません。私がそうすると、すでに選択されているアイテムは選択解除されます。私がここで逃したことは何ですか?JCheckBoxを使ったJList

JList recipientsList = new JList(
      new RecipientWrapper[] { new RecipientWrapper("apple"), new RecipientWrapper("orange"), 
       new RecipientWrapper("mango"), new RecipientWrapper("paw paw"), new RecipientWrapper("banana") }); 
     recipientsList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); 
     recipientsList.setCellRenderer(new CheckboxListRenderer()); 

     class CheckboxListRenderer implements ListCellRenderer<RecipientWrapper> 
     { 
     private static final long serialVersionUID = 1L; 
     private JCheckBox checkBox; 
     @Override 
     public Component getListCellRendererComponent(JList list,RecipientWrapper value, int index, boolean isSelected, 
                 boolean cellHasFocus) 
     { 
      Component c = null; 
      if(value != null) 
      { 
      getCheckBox().setText(value.toString()); 
      checkBox.setSelected(isSelected); 
      value.setSelected(isSelected); 
      c = checkBox; 
      } 
      else 
      { 
      c = new JLabel(); 
      } 
      return c; 
     } 

     private JCheckBox getCheckBox() 
     { 
      if(checkBox == null) 
      { 
      checkBox = new JCheckBox(); 
      } 
      return checkBox; 
     } 
     } 
+0

checkBox.setSelected(isSelected);間違った部分です..それはcheckBox.setSelected(value.isSelected())する必要があります。 MouseListenerでJListを再描画する必要があります。 – Brunthavan

答えて

0

これは、意図した動作がJListです。リスト内の複数の値を選択するには、CtrlまたはShiftのキーを押し続ける必要があります。

この動作を変更したい場合は、チェックボックスコンポーネントにActionListenerを使用し、それをイベント全体にわたって保持することを検討するとよいでしょう。