即时创建多个复选框的问题

Issue with creating multiple checkbox on a fly

我正在尝试从特定文件夹中读取所有文件名,并尝试在 JFrame 中创建多个具有相同名称的复选框。因此,如果文件夹中有 5 个文件,应用程序应在框架中显示 5 个复选框。

这是我的代码。

    JFrame frame = new JFrame();
    File folder = new File("C://Tests");
    File[] listOfFiles = folder.listFiles();

        for (int i = 0; i < listOfFiles.length; i++) {
          if (listOfFiles[i].isFile()) {
            System.out.println("File " + listOfFiles[i].getName());
          } else if (listOfFiles[i].isDirectory()) {
            System.out.println("Directory " + listOfFiles[i].getName());
          }
          JCheckBox checkbox[i] = new JCheckBox(listOfFiles[i].getName());

        }

但是我收到错误 "Type mismatch: cannot convert from JCheckBox to JCheckBox[]"。有人可以告诉我我做错了什么吗?

感谢任何帮助。谢谢

首先定义并初始化数组...

JCheckBox checkbox[] = new JCheckBox[listOfFiles.length];

然后填写...

for (int i = 0; i < listOfFiles.length; i++) {
    if (listOfFiles[i].isFile()) {
        System.out.println("File " + listOfFiles[i].getName());
    } else if (listOfFiles[i].isDirectory()) {
        System.out.println("Directory " + listOfFiles[i].getName());
    }
    checkbox[i] = new JCheckBox(listOfFiles[i].getName());
}

如果您希望以后能够在您的程序中访问该数组,则需要将该数组设为实例字段...

public class ... {
    //...
    private JCheckBox checkbox[];

然后当你知道你有多少文件时初始化它...

File[] listOfFiles = folder.listFiles();
checkbox[] = new JCheckBox[listOfFiles.length];

坦率地说,一个更简单的解决方案是使用某种 List,例如 ArrayList。有关详细信息,请参阅 Collections Trail

尝试这样的事情。

  1. 在循环外声明数组;类似的东西-> JCheckBox checkbox[] = new JCheckBox[listOfFiles.length]

  2. 在循环内部,将复选框实例保留在数组中 -> checkbox[j] = new JCheckBox(listOfFiles[i].getName());