即时创建多个复选框的问题
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
尝试这样的事情。
在循环外声明数组;类似的东西-> JCheckBox checkbox[] = new JCheckBox[listOfFiles.length]
在循环内部,将复选框实例保留在数组中 -> checkbox[j] = new JCheckBox(listOfFiles[i].getName());
我正在尝试从特定文件夹中读取所有文件名,并尝试在 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
尝试这样的事情。
在循环外声明数组;类似的东西-> JCheckBox checkbox[] = new JCheckBox[listOfFiles.length]
在循环内部,将复选框实例保留在数组中 -> checkbox[j] = new JCheckBox(listOfFiles[i].getName());