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)的回答帮助你,你应该考虑接受它。“克里斯蒂安马里安只是好奇,这个名字是什么意思?我不知道它有什么意义,但是一个充满鳗鱼的气垫船的形象只是……