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按钮。