gpt4 book ai didi

java - JList 由于某种原因没有更新

转载 作者:行者123 更新时间:2023-12-02 04:29:40 25 4
gpt4 key购买 nike

有一个Mainpanel JFrame,具有InsertView 作为InternalJFrames。 Insert 将文本数据插入到 .txt 文件中(如果需要,则创建它们)。 View 在 JList 中显示不更新的 .txt 文件列表,退出应用程序并再次运行后,项目会正确显示,但我想在插入它们后立即显示列表.

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

我做了什么?:为了解决这个问题,我创建了一个 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) 创建新模型后调用 jList1.setModel(model),2) 考虑学习一本关于 OOP 概念和 Java 编程的好书,因为变量、对象和变量范围的这些概念是基础知识.

关于java - JList 由于某种原因没有更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31633218/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com