填充从文本文件的JList通过按钮读取
问题描述:
代码:
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
JFileChooser fileChooser = new JFileChooser();
//fileChooser.setCurrentDirectory(new File(System.getProperty("user.home")));
int result = fileChooser.showOpenDialog(this);
if (result == JFileChooser.APPROVE_OPTION)
{
File selectedFile = fileChooser.getSelectedFile();
System.out.println("Selected file: " + selectedFile.getAbsolutePath());
DefaultListModel lista = new DefaultListModel();
JList jList1 = new JList();
try {
FileReader archivo = new FileReader(selectedFile.getAbsolutePath());
BufferedReader lector = new BufferedReader(archivo);
String texto = null;
while ((texto = lector.readLine()) != null) {
lista.addElement(texto);
//System.out.println("Lista:"+lista);
//System.out.println(texto);
}
jList1.setModel(lista);
System.out.println("jList1:"+jList1);
}
catch (FileNotFoundException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
}
}
我试图填充从通过READ_FILE按钮读取文本文件的JList
我能取文件路径和正确的文件的内容,我用打印语句进行了验证,但我的jlist仍然是空的。 在设计中,我检查了jlist的变量名称,这两个名称都与我在代码中使用的名称相匹配。
请给我建议的错误。
答
从我看到你每次按下按钮时创建一个新的JList
。您确实填写了DefaultListModel
,但您将其分配给某个jList,而不是您在UI上的那个。
就明确行:
JList jList1 = new JList();
然后repaint
和revalidate
它的容器后setModel
换句话说,你可以填充的jList1,但它是一个你永远不会放回到一个局部变量'JPanel' ..列表没问题,你不显示它。最好的情况是在你的用户界面上有一个Jlist对象,每当你点击按钮更新它的模型。无需删除整个列表。 – gvlachakis
我编辑我的答案 – gvlachakis
你已经完全正确地做了所有事情,但是你没有提出。你创建一个JList1,你填写它,但是你没有放在UI上。第一步:在您的用户界面上添加一个jlist,并回答我所称的问题。 – gvlachakis