我正在尝试使用 Swing 编写 que 卡应用程序。 现在,我尝试在 JList 的一个文件夹中列出所有 que 卡组(它们是 txt 文件)。 所以我想获取文本文件的文件名并将它们添加到我已经创建的列表中。我尝试了多种方法,这是我认为最接近的方法:
JList<DeckTypeA> listTypeADecks = new JList();
DefaultListModel<DeckTypeA> listModelTypeADecks = new DefaultListModel<DeckTypeA>();
File folder = new File("dexA");
//much later in the code
File[] listOfFiles = folder.listFiles();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
String[] listOfFileNames = new String[listOfFiles.length];
listOfFileNames[i] = listOfFiles[i].getName();
listTypeADecks.setListData(listOfFileNames); //here i get an error
};
我收到一条错误消息,指出 JList.setListData(String[])
无效(我已尝试将其添加到默认列表模型并以许多不同的其他方式添加)。当我查找该方法时,它总是说参数必须是对象,但字符串不是对象类型吗?
非常感谢您的帮助,如果您发现任何其他错误,请告诉我。
最佳答案
您的代码存在一些问题。
您正在声明
listofFileNames
内部for
-环形。该变量在每次循环时都会再次初始化,并在最后销毁。这意味着任何更改都会被丢弃。您正在调用
listTypeADecks.setListData
在每个循环的末尾,但您可能希望在整个循环完成后调用它。在您的实现中将会有空
Strings
在listOfFileNames
因为并非每个索引都可能是一个文件,但您只需跳过它们即可。
你可能想要这样的东西:
File[] listOfFiles = folder.listFiles();
List<String> listOfFileNames = new List<String>();
for (int i = 0; i < listOfFiles.length; i++) {
if (listOfFiles[i].isFile()) {
listOfFileNames.add(listOfFiles[i].getName());
};
listTypeADecks.setListData(listOfFileNames.toArray());
关于java - JList 文件夹中所有文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32945325/