我不会用 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/