簡體   English   中英

為JList設置了Java DefaultListModel,但是添加對象不起作用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM