这是我的代码:
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问题。
答案 0 :(得分:1)
首先,我建议将所有内容简化为与此类似的内容
mapTest :: [Car] -> [String]
mapTest cs = map (toLower . carMan) cs
Couldn't match type ‘Char’ with ‘[Char]’
Expected type: Char -> String
Actual type: Char -> Char
In the first argument of ‘(.)’, namely ‘toLower’
In the first argument of ‘map’, namely ‘(toLower . carMan)’
cars.hs:197:37:
Couldn't match type ‘[Char]’ with ‘Char’
Expected type: [(Char, String, Int, [(String, Int)])]
Actual type: [Car]
In the second argument of ‘map’, namely ‘cs’
In the expression: map (toLower . carMan) cs
然后你可以在动作监听器中向dlm添加元素,就像这样
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
您还应该有一个方法来返回您要添加到列表中的内容,而不是直接从类中访问它
因此,请将此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
答案 1 :(得分:-2)
首先,您要在列表中添加空dlm。然后当按下按钮时,你正在向dlm添加对象......但没有任何内容添加到列表中?所以你什么都得不到。
在dlm中添加对象后移动list.setmodel(dlm)。
另外使用dlm.addElement不仅dlm.add ..希望有所帮助