[英]How to read Checkboxes status in Jlist
我正在开发一个GUI,其中已将一些复选框包含到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));
如果我勾选Checkbox a,它会打印true。 但是,如果Checkbox a被勾选,而我又勾选了一个(所以现在我勾选了Checkbox a和c),它将返回false。
就像它是我的最后选择。
我想要的是例如是否勾选了a,c,d复选框,以便能够进行for循环,并每次查看是否勾选了值i的复选框。
谢谢
将ListSelectionModel.SINGLE_SELECTION
更改为MULTIPLE_INTERVAL_SELECTION
以一次允许多个选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.