java - JList 文件夹中所有文件名

标签 java string swing object jlist

我正在尝试使用 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在每个循环的末尾,但您可能希望在整个循环完成后调用它。

  • 在您的实现中将会有空 StringslistOfFileNames因为并非每个索引都可能是一个文件,但您只需跳过它们即可。

你可能想要这样的东西:

    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/

相关文章:

java - Z3:使用Java API来简化断言

java - 如何以类型安全的方式运行 Hibernate NativeQuery 而不是返回 Object[]

java - 如何支持连接池供应商特定的 DataSourceProperties 配置

python - python字符串索引访问的时间复杂度?

java - 需要有关我的程序在 String 中查找重复项的效率的输入

java - 是否可以去除 JButton 图标上的阴影?

java - POI条形图生成一系列有问题

java - 缺少 GUI 输出

java - JTable 行标题外观

c - 来自 C 函数的字符串