Java DefaultListModel是为JList设置的,但添加对象不起作用

时间:2016-03-09 19:16:49

标签: 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.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问题。

2 个答案:

答案 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 ..希望有所帮助