Java JList没有';由于某种原因,我不能更新

Java JList没有';由于某种原因,我不能更新,java,swing,Java,Swing,有一个主面板JFrame将插入和视图作为内部JFrame插入将文本数据插入.txt文件(必要时创建它们)视图在JList中显示一个不更新的.txt文件列表,在退出应用程序并再次运行后,这些项目将正确显示,但我希望在插入它们后立即显示该列表 预期工作:从Insert IJFrame(此代码工作正常)写入.txt文件并单击主面板中的显示按钮后,视图中的JList应显示该项目 我做了什么?:为了解决这个问题,我制作了一个updateValues()方法,重新填充JList,但仍然失败 主面板: pub

有一个
主面板
JFrame将
插入
视图
作为内部JFrame<代码>插入将文本数据插入.txt文件(必要时创建它们)<代码>视图在JList中显示一个不更新的.txt文件列表,在退出应用程序并再次运行后,这些项目将正确显示,但我希望在插入它们后立即显示该列表

预期工作:从Insert IJFrame(此代码工作正常)写入.txt文件并单击
主面板
中的显示按钮后,
视图
中的JList应显示该项目

我做了什么?:为了解决这个问题,我制作了一个
updateValues()
方法,重新填充JList,但仍然失败

主面板

public class MainPanel extends javax.swing.JFrame {
  View view;
  Insert insert;
  Read read;
  public MainPanel() {
    initComponents();
    pack();
    insert = new Insert();
    view = new View();
    read = new Read(view);
    jPanel2.add(insert);
    jPanel2.add(view);
    jPanel2.add(read);
    insert.setVisible(true); // Initally only insert in visible
    view.setVisible(false);  // later I've created buttons to 
    read.setVisible(false);  // display required IJFrame

}

private void readButtonActionPerformed(java.awt.event.ActionEvent evt) {                                                 
    read.updateValues();
    view.setVisible(false);
    insert.setVisible(false);
    read.setVisible(true);
  }
}
读取

public class Read extends javax.swing.JInternalFrame {

private View view;
public Read(View view) {
    initComponents();
    pack();
    DefaultListModel model = new DefaultListModel();
    jList1.setModel(model);
    File folder = new File("/Naruto/Dattebayo/");
    File[] listOfFiles = folder.listFiles();
    for(File file : listOfFiles ){
        if(file.getName().endsWith(".txt"))
        model.addElement(file.getName());

    }
    this.view=view;
}


public void updateValues() {
    DefaultListModel model = new DefaultListModel();
    File folder = new File("/Naruto/Dattebatyo");
    File[] listOfFiles = folder.listFiles();
    for (File file : listOfFiles) {
        if (file.getName().endsWith(".txt")) {
            model.addElement(file.getName());
        }
     }
  }
}

您永远不会更改JList的型号,因此它不会神奇地更改其显示,而只会在您用代码告诉它时更改其显示。updateValues方法创建了一个新的DefaultListModel,但没有对其执行任何操作。也许您应该通过调用JList上的
setModel(model)
将JList的模型设置为新模型


需要注意的关键点是,这两个方法中的模型变量是两个完全唯一的变量,它们引用唯一且独立的对象。改变一个的状态对另一个绝对没有影响。再次)1)调用<代码> jist1.StModel(model)< /C> >在创建新模型之后,2)考虑研究OOPS概念和java编程的一本体面的书,因为这些变量、对象和变量范围的概念是基本的东西。

谢谢你们的努力,我仍然是一个初学者,还有很多东西要学:- - UzumakiNaruto,如果气垫船充斥着Eels(了不起的名字BTW)的回答帮助你,你应该考虑接受它。“克里斯蒂安马里安只是好奇,这个名字是什么意思?我不知道它有什么意义,但是一个充满鳗鱼的气垫船的形象只是……