这是我的工作代码,它读取TXT文件并在控制台中显示:
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.FileNotFoundException;
import java.io.IOException;
import javax.swing.DefaultListModel;
import javax.swing.JList;
public class LeerArchivoDeTexto {
public static void main(String[] args) {
File archivo = new File("Archivo.txt");
BufferedReader lector = null;
DefaultListModel lista = new DefaultListModel();
JList jList1 = new JList();
try {
lector = new BufferedReader(new FileReader(archivo));
String texto = null;
while ((texto = lector.readLine()) != null) {
lista.addElement(texto);
System.out.println(texto);
}
jList1.setModel(lista);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (lector != null) {
lector.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
问题是我想将TXT文件中的数据加载到JList
。包含JList
的注释行不起作用。有什么想法吗?
答案 0 :(得分:6)
JList
未实例化,因为您明确将其设置为null:
JList JList1 = null; // not initialized
所以当我尝试将模型设置为它时,我假设你在这一行得到NullPointerException
:
JList1.setModel(lista); // NPE here
您需要实例化JList
并将模型设置为:
JList jList1 = new JList();
jList1.setModel(lista);
答案 1 :(得分:1)
如果通过
正确构建JListJList JList1 = new JList();
你可以取消注释所有的行,它会正常工作。当然,您必须将此列表添加到swing容器中。
答案 2 :(得分:1)
您永远不会创建一个与JList
签名的JList1
新实例,但您尝试在该变量上调用方法,并且最有可能获得NullPointerException
。
而不是为JList1
指定null,而是指定一个新实例。