java - 如何在 swing java 的检查列表框中使用全选选项?

标签 java arrays swing checkbox jfilechooser

在我的代码片段中! “checkBoxList”没有文件选择器选择并存储在其中的文件

复选框“tmp”它有文件的复选框!

当我在我的面板中显示文件 [checkboxlist] 时。它是未选中的! 在我可以选择勾选/取消勾选之后。

我有以下用于选择/取消选择选项的代码

我需要知道何时显示文件!文件应显示为选中(打勾) 然后我可以修改我可以勾选/取消勾选的内容。

我坚持这个逻辑!

[

编辑:我做了并更新了这部分的答案(见图片)。

我将选择/取消选择全部添加到面板(框)并且它有效

box.add(chckbxSelectAll);

&& 我需要并且很好奇如何将我的 selectall 复选框放入我的面板中

]

public void selectAllMethod() {
Iterator<JCheckBox> i = checkBoxList.iterator();
while (i.hasNext()) {
    JCheckBox tmp = i.next();
        if (chckbxSelectAll.isSelected()) {
            tmp.doClick();
        } else {
            tmp.setSelected(false);
            selectedCounter -= 1;
            if (selectedCounter < 0) {
                selectedCounter = 0;
            }
    noOfFileTxt.setText(Integer.toString(selectedCounter));
        }
    }
}

这是我选择文件夹并在带有复选框的面板中显示它的按钮选择方法

public void chooseDirectoryFrom() {
    String tempStr = null;
    try {
        UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
        fileChooser = new JFileChooser();
        Font font = new Font("Latha", Font.ITALIC, 10);
        fileChooser.setFont(new Font("Latha", Font.PLAIN, 13));
        fileChooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
        fileChooser.setFont(font);

        int returnVal = fileChooser.showOpenDialog(frame);
        if (returnVal == JFileChooser.APPROVE_OPTION) {
            tempStr = fileChooser.getSelectedFile().getCanonicalPath();
        }
        if (tempStr != null && !tempStr.trim().equals("")) {
            searchBox.setText(tempStr);
            // Enable the search button
        //  btnDisplay.setEnabled(true);
        } else {
            //btnDisplay.setEnabled(false);
        }
    } catch (Exception e) {
        e.printStackTrace();
    }

//  public void selectToDisplay() {            //disabled btn to display
    File sourceFolder = null;
    Box box = Box.createVerticalBox();
    if (boxList.size() != 0) {
        middlePanel.remove(scrollPane);
        middlePanel.repaint();
        frame.repaint();
        boxList = new ArrayList<Box>();
        checkBoxList = new ArrayList<JCheckBox>();
        fileNamesMap = new HashMap<String, String>();
        selectedCounter = 0;
        noOfFileTxt.setText(Integer.toString(selectedCounter));
    }
    sourceFolder = new File(searchBox.getText());
    File[] sourceFilesList = sourceFolder.listFiles();
    JCheckBox cb1 = null;
    for (int i = 0; i < sourceFilesList.length; i++) {
        if (sourceFilesList[i].isFile() & sourceFilesList[i].getName().endsWith(".txt")) {
            fileNamesMap.put(sourceFilesList[i].getAbsolutePath(), sourceFilesList[i].getName());
            cb1 = new JCheckBox(sourceFilesList[i].getAbsolutePath()); 
            cb1.setFont(new Font("Latha", Font.BOLD, 20));
            box.add(cb1);
            checkBoxList.add(cb1);
            cb1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent e) {
                    if (((AbstractButton) e.getSource()).isSelected()) {
                        selectedCounter += 1;
                    } else {
                        selectedCounter -= 1;
                        if (selectedCounter < 0) {
                            selectedCounter = 0;
                        }
                    }
                    noOfFileTxt.setText(Integer.toString(selectedCounter));
                }
            });
        }
    }

    boxList.add(box);
    scrollPane = new JScrollPane(box);
    scrollPane.setPreferredSize(new Dimension(1050, 350));
   scrollPane.setVerticalScrollBarPolicy ( ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS );
   middlePanel.add ( scrollPane );
   frame.getContentPane().add(middlePanel);
   frame.repaint();
  frame.revalidate();
}

这是我的图片(没有选择)!当我在面板中加载文件时

最佳答案

回答我自己的问题:

在for循环中添加选中的复选框集和 在复选框 Action 监听器之外,以便它将执行 setselected 方法!

 cb1.setSelected(!cb1.isSelected());
             selectedCounter += 1;
             noOfFileTxt.setText(Integer.toString(selectedCounter));



selectedCounter += 1; will display the ticked count to the textfield(noOfFileTxt)

谢谢你:)

关于java - 如何在 swing java 的检查列表框中使用全选选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35573060/

相关文章:

java - 用户的屏幕通知

javascript - 在不到 O(n) 的时间内找到(排序的)数组中的重复元素?

java - 更新 JLabel 中包含的图像 - 问题

java - 使用 JComboBox 设置 JLabel 的大小

java - 我正在用 Java 编写屏幕捕获模块,但在将屏幕截图写入磁盘时遇到严重的性能问题。我还可以做些什么?

java - IntelliJ Idea 13.0.1 Community Edition 中的自动完成代码不如 Eclipse 有用?

java - 是否可以阻止 JIT 优化方法调用?

java - 线程 hibernate 时间过长

javascript - 循环检查复选框并创建多维数组

javascript - 打印数组 JAVASCRIPT/d3 中所有项目的值