java - 为什么这个简单的循环在 netbeans、java (JFRAME) 中会失败?

标签 java swing netbeans

我不会用 java 编程,但决定通过在 netbeans 中制作一个 jframe 来尝试一下。在自动生成的 initComponent() 方法中,这个 for 循环无法运行,告诉我以下事情:

  • 类型的非法开始
  • 找不到符号:类 i

    friendList.setModel(new javax.swing.AbstractListModel() {
        URL url = getClass().getResource("friends");
        File folder = new File(url.getPath());
        File[] listOfFiles = folder.listFiles();
        String[] elements = new String[listOfFiles.length];
        for(int i=0; i<listOfFiles.length;i++) {
            elements[i] = (listOfFiles[i].getName());
    }
    

    谁能解释一下?

最佳答案

让我们看看能不能解决这个问题......

您的基本问题似乎是您试图在可执行上下文(方法或构造函数)之外定义可执行代码。

URL url = getClass().getResource("friends"); 后跟 File folder = new File(url.getPath()); 没有意义,因为使用 getResource 的目的是找到磁盘上可能存在或不存在的资源。在大多数情况下,它嵌入在您的应用程序 jar 上下文中。

我“认为”您正在尝试做的是找到一个目录,这可以使用更像...的方式来完成

File folder = new File("friends");

这假定目录 friends 与您的程序在相同的执行上下文中。

接下来,您可以简单地创建一个 DefaultListModel 并像这样填充它,而不是创建一个 AbstractListModel 并尝试在可执行上下文之外运行代码:

DefaultListModel model = new DefaultListModel();
File[] listOfFiles = folder.listFiles();
for(int i=0; i<listOfFiles.length;i++) {
    model.addElement(listOfFiles[i].getName());
}
friendList.setModel(model);

举个例子。

也许在深入研究 GUI 的复杂性之前,您应该花更多时间学习语言的基础知识,这将对解决此类问题有很大帮助……作为一个友好的建议。

关于java - 为什么这个简单的循环在 netbeans、java (JFRAME) 中会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32469130/

相关文章:

Java int 数组格式错误的声明

java - JSF 每 2 秒从系统动态加载属性文件

java - 真实的物体而不是在 Canvas 上绘画

php - mysqli_affected_rows() 返回 -1 但查询有效

Netbeans双屏

java - 高效的 hashCode() 实现

java - 我可以从一个外部库导入和编辑代码吗? (例如谷歌地图实用程序)

java - 不使用JDialog如何使用JDialog

java - 将图像添加到 GUI

java - 在 Java 中使用 for 循环在多个标签上使用 setText() (Netbeans)