Java DefaultListModel 是为 JList 设置的,但添加对象不起作用



这是我的代码:

JScrollPane scrollPane = new JScrollPane();
scrollPane.setBounds(75, 35, 352, 154);
getContentPane().add(scrollPane);
DefaultListModel<Krug> dlm = new DefaultListModel();
JList list = new JList();
scrollPane.setViewportView(list);
list.setModel(dlm); 
//using this button Object(Krug) shoul be added to dlm  
JButton btnDodaj = new JButton("Dodaj krug");
btnDodaj.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {        
        DlgKrug dijalog = new DlgKrug();
        dijalog.setVisible(true);
        //checks if OK button is pressed on dialog window
        if (dijalog.isPotvrdjen()) {        
            dlm.add(0, dijalog.k);      
        } else {}       
    }
});

k对象是在 DlgKrug(JDialog) 中创建的,它public

当我尝试将对象添加到列表中时,它不起作用,并且没有收到错误消息。 DlgKrug工作正常(我检查过),但我认为问题发生在这里。

如果我不是很精确,我很抱歉,但我只是一个 Java 初学者,这是我的第一个堆栈溢出问题。

首先,我建议将所有这些简化为与此类似的内容

DefaultListModel dlm = new DefaultListModel();
JList list = new JList(dlm); //Bind the dlm and JList here
JScrollPane pane = new JScrollPane(list); //Bind the list and scrollpane here

然后,您可以像这样将元素添加到操作侦听器中的 dlm 中

button.addActionListener(e ->
{
    dlm.add(index, content);
    //Or use this to just add the object to the end of the list
    dlm.addElement(content);
});

您还应该有一个方法来返回您尝试添加到列表中的内容,而不是直接从类访问它

因此,将此dijalog.k更改为如下方法:

public String getElement() //Doesn't have to be a String
{
    return someString;
}

首先,您将在列表中添加空的DLM。然后,当按下按钮时,您正在将对象添加到dlm...但是没有什么添加到列表中?所以你什么也得不到。

在 dlm 中添加对象后移动列表.setmodel(dlm)。

还要使用 dlm.addElement 而不仅仅是 dlm.add.。希望有帮助

相关内容

  • 没有找到相关文章

最新更新