gpt4 book ai didi

java - 未添加到 JList 的元素

转载 作者:行者123 更新时间:2023-12-04 14:41:22 24 4
gpt4 key购买 nike

我正在尝试将文件名添加到我的 JList 但没有成功。这是一段代码:


DefaultListModel model = new DefaultListModel();
listLayer.setModel(model);
model.addElement(file.getName());

listLayer 是一个 JList,我想在其中添加文件名。有关信息,我正在 netBeans 中编写我的 GUI 应用程序,因此我无法在此代码中创建新的 JList 对象,因为它已在将 JList 添加到我的布局时自动创建。因此我只能通过它的方法访问它。

非常感谢,米甲。

-------------------------------------------- --------------------------

好的,我会尝试进一步扩展它:

private void openActionPerformed(java.awt.event.ActionEvent evt) {                                     

JFileChooser fileChooser = new JFileChooser("C:/");

FileFilter filter1 = new MyCustomFilter();
fileChooser.setFileFilter(filter1);

int returnVal = fileChooser.showOpenDialog(this);

if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();

//String[] tokens = file.getName().split(".");
//String name = tokens[0];

DefaultListModel model = new DefaultListModel();
listLayer.setModel(model);
model.addElement(file.getName());

} else {
System.out.println("File access cancelled by user.");
}
}

是的,我的名为 listLayer 的 JList 在代码的不可修改部分声明如下:私有(private)javax.swing.JList listLayer;

再次感谢您的帮助。迈克尔

最佳答案

感谢您发布更多代码。现在我们很可能可以回答您的问题。我看到的一个问题是,每次按下按钮时,您都在重新创建一个 DefaultListModel,并使用这个新模型设置 JList,从而有效地删除列表之前保存的所有数据。避免这样做的一种方法是简单地获取 JList 已有的模型,它应该是 DefaultListModel,然后向其中添加项目。您需要转换 getModel() 返回的对象,因为根据 API,Java 只知道这是一个 ListModel 对象,而 ListModel 没有 addElement(...) DefaultListModel 执行的方法。

大概是这样的:

if (returnVal == JFileChooser.APPROVE_OPTION) {
File file = fileChooser.getSelectedFile();

        // note the cast since getModel() only returns a ListModel
DefaultListModel model = (DefaultListModel)listLayer.getModel(); // changed**

model.addElement(file.getName());

}

关于java - 未添加到 JList 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8379623/

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