簡體   English   中英

如何在Jlist中讀取復選框狀態

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM