这是我的代码:
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.。希望有帮助