如何阅读Jlist中的复选框状态

时间:2014-06-04 09:55:58

标签: java swing boolean jlist jcheckbox

我正在开发一个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的复选框。

谢谢

1 个答案:

答案 0 :(得分:1)

ListSelectionModel.SINGLE_SELECTION更改为MULTIPLE_INTERVAL_SELECTION,以便一次允许多个选择。