Java JList与JCheckBox
我尝试的是使用复选框JList。我无法选择多个项目。当我这样做时,已经选中的项目将被取消选中。我错过了什么Java JList与JCheckBox,java,Java,我尝试的是使用复选框JList。我无法选择多个项目。当我这样做时,已经选中的项目将被取消选中。我错过了什么 JList recipientsList = new JList( new RecipientWrapper[] { new RecipientWrapper("apple"), new RecipientWrapper("orange"), new RecipientWrapper("mango"), new RecipientWr
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;
}
}
JList recipientsList=新JList(
new RecipientWrapper[]{new RecipientWrapper(“苹果”),new RecipientWrapper(“橙色”),
新RecipientWrapper(“芒果”)、新RecipientWrapper(“爪子”)、新RecipientWrapper(“香蕉”)};
recipientsList.setSelectionMode(ListSelectionModel.MULTIPLE\u INTERVAL\u SELECTION);
recipientsList.setCellRenderer(新的CheckboxListRenderer());
类CheckboxListRenderer实现ListCellRenderer
{
私有静态最终长serialVersionUID=1L;
私有JCheckBox复选框;
@凌驾
公共组件GetListCellRenderComponent(JList列表、RecipientWrapper值、int索引、布尔isSelected、,
布尔单元(聚焦)
{
分量c=null;
if(值!=null)
{
getCheckBox().setText(value.toString());
复选框.setSelected(isSelected);
值。setSelected(isSelected);
c=复选框;
}
其他的
{
c=新的JLabel();
}
返回c;
}
私有JCheckBox getCheckBox()
{
如果(复选框==null)
{
复选框=新的JCheckBox();
}
返回复选框;
}
}
这是JList
的预期行为。您需要按住Ctrl或Shift键来选择列表中的多个值
如果您想更改此行为,您可能需要考虑使用“代码> > ActhListNeult/Cux>复选框组件,并将其跨事件持久化。
复选框。这是错误的部分。。它应该是checkBox.setSelected(value.isSelected());需要用MouseListener重新粉刷JLister。。