Java DefaultListModel是为JList设置的,但添加对象不会';行不通

Java DefaultListModel是为JList设置的,但添加对象不会';行不通,java,swing,jlist,defaultlistmodel,Java,Swing,Jlist,Defaultlistmodel,这是我的代码: 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.

这是我的代码:

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 {}       
    }
});
JScrollPane scrollPane=newjscrollpane();
滚动窗格。后退(75,35,352,154);
getContentPane().add(滚动窗格);
DefaultListModel dlm=新的DefaultListModel();
JList list=新JList();
scrollPane.setViewportView(列表);
list.setModel(dlm);
//应使用此按钮将对象(Krug)添加到dlm
JButton btnDodaj=新JButton(“Dodaj krug”);
addActionListener(新的ActionListener(){
已执行的公共无效操作(操作事件e){
DlgKrug dijalog=新的DlgKrug();
dijalog.setVisible(真);
//检查对话框窗口上是否按下了“确定”按钮
if(dijalog.isPotvrdjen()){
dlm.add(0,dijalog.k);
}else{}
}
});
k
对象是在
DlgKrug(JDialog)
中创建的,它是
public

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


如果我说得不太准确,我很抱歉,但我只是一个Java初学者,这是我的第一个stackoverflow问题。

1st您正在列表中添加空dlm。然后,当按下按钮时,您正在将对象添加到dlm。。。但清单上并没有增加什么?所以你什么也得不到

在dlm中添加对象后移动list.setmodel(dlm)


还应使用dlm.addElement,而不仅仅是dlm.add。。希望这有帮助首先,我建议将所有这些简化为类似的内容

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;
}

有一个完整的工作示例。您确定
dijalog.isPotvrdjen()
的计算结果为true吗?似乎不太可能在新构建的对话框上按下OK按钮。