簡體   English   中英

為什么我的DefaultListModel沒有顯示在我的JList上?

[英]Why is my DefaultListModel not showing up on my JList?

我有以下方法。

           DefaultListModel getModelForCabin(Cabin cabin) {

 List<Camper> listAdded= new ArrayList<Camper>(getOrCreateGroup(cabin));

 DefaultListModel<Camper> dfm= new DefaultListModel<Camper>();
    for(Camper c: listAdded){
        if(!dfm.contains(c)){
            dfm.addElement(c);
        }

    }
    //System.out.println(listAdded);
    //System.out.println(dfm);

    return dfm;
}

然后,我像這樣在JList中設置此方法...

 JList list = new JList(getModelForCabin((Cabin)comboBox.getSelectedItem()));
scrollPane_1.setViewportView(list);

在該方法中,如果我按系統打印行中所示打印dfm和listAdded,則會顯示兩者。

如果我輸入這個...

System.out.println(getModelForCabin((Cabin)comboBox.getSelectedItem());   

它也打印出模型。

它不會做的是將模型添加到JList中。 我嘗試過更改代碼,刪除JList並制作一個新的代碼,然后重新排列代碼。

不管我做什么,都行不通。

因此,我的列表打印正常,我的DefaultListModel打印良好,我的打印Cabin和Campers的HashMap工作正常,但是JList將不會打印模型。

添加:

     JScrollPane scrollPane_1 = new JScrollPane();
    scrollPane_1.setBounds(361, 205, 296, 339);
    getContentPane().add(scrollPane_1);

     list = new JList(getModelForCabin((Cabin)comboBox.getSelectedItem()));
    scrollPane_1.setViewportView(list);

我發現問題是因為我沒有設置模型。 如果模型是本地DefaultListModel,則必須使用setModel方法在主類中對其進行設置。

我需要引用JList,然后像這樣執行setModel。

            list.setModel(getModelForCabin((Cabin)comboBox.getSelectedItem()));

其中list是JList的變量,而getModelForCabin(Cabin cab)是返回DefaultListModel的方法。

它已添加到“添加”按鈕的動作偵聽器以及打開類時創建的刷新按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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