[英]Java DefaultListModel is set for a JList, but adding objects doesn't work
这是我的代码:
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初学者,这是我的第一个stackoverflow问题。
首先,我建议简化了这一切,以类似于此
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中添加对象后,移动list.setmodel(dlm)。
不仅要使用dlm.add,还要使用dlm.addElement。希望对您有所帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.