我正在开发一个GUI,其中我将一些Checkbox包含到Jlist中,但我无法读取它们的状态。下面我有一个代码示例
final JScrollPane scrollPaneWat = new JScrollPane();
scrollPaneWat.setBounds(526, 248, 152, 140);
Pane.add(scrollPaneWat);
scrollPaneWat.hide();
@SuppressWarnings("unchecked")
final JList<?> list = new JList(new CheckListRendererClasses[] {
new CheckListRendererClasses("a"),
new CheckListRendererClasses("b"),
new CheckListRendererClasses("c"),
new CheckListRendererClasses("d"),
new CheckListRendererClasses("e"),
new CheckListRendererClasses("f"),
new CheckListRendererClasses("g"),
scrollPaneWat.setViewportView(list);
list.setBackground(Color.LIGHT_GRAY);
list.setFont(new Font("Times New Roman", Font.ITALIC, 14));
list.setCellRenderer(new CheckListRenderer());
list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
list.addMouseListener(new MouseAdapter(){
public void mouseClicked(MouseEvent event){
JList list = (JList) event.getSource();
int index = list.locationToIndex(event.getPoint());
CheckListRendererClasses item = (CheckListRendererClasses)
list.getModel().getElementAt(index);
item.setSelected(! item.isSelected());
list.repaint(list.getCellBounds(index, index));
}
});
我试过这个:
for (int i = 0; i < 7; i++) {
Object sel = list.getModel().getElementAt(i);
System.out.print(sel.toString());
}
我回来了a,b,c,d,e,f,g
另外,当我尝试这个时:
System.out.println(list.isSelectedIndex(1));
如果勾选复选框a,则打印为true。但如果选中了复选框a并再勾选一次(所以现在我勾选了复选框a和c)它返回false。
这就像是我最后的选择。
我想要的是,例如,如果我勾选了a,c,d复选框以便能够进行for循环并且每次都看到是否勾选了值为i的复选框。
谢谢
答案 0 :(得分:1)
将ListSelectionModel.SINGLE_SELECTION
更改为MULTIPLE_INTERVAL_SELECTION
,以便一次允许多个选择。