簡體   English   中英

Java Swing - DefaultListModel - 當我只想打印一個字段時,打印所有對象信息

[英]Java Swing - DefaultListModel - Printing all object information, when i only want to print one field

我有這個DefaultListModel

DefaultListModel listModel;
//constructor does the right hting... etc.. I skipped over a lot of code
JList jlist_available_items; 
....
jlist_available_items= new JList(cartModel); //etc

一切都在完美地工作,問題是

listModel.addElement(product); 

如果我將它更改為product.name它將看起來正確,但行為錯誤[對象本身將不可加載,只有名稱]

將對象添加到視圖中,我想要添加的是對象名稱。

當我將其更改為名稱時會導致各種問題,因為我將對象存儲在hashmap中,而hashmap使用對象作為鍵,而不是product.name字符串。

原因是這個方法可以在hashmap中搜索正確的對象。

  for (Product p : store.database.keySet()) {
    if (jlist_available_items.getSelectedValuesList().contains(
        (Product) p)) { // if item is selected
        cart.addItem(p);
    }
  }

我怎樣才能解決這個問題?? 我一直在嘗試修復它和相關的錯誤兩個小時almsot =(!

樣本輸出也是

Product [description=descrion test, name=test]

這就是它的印刷。 我只想要它打印名稱。 =(!

對象也在hashmap中。 我可以遍歷hashmap直到一個對象具有相同的名稱值,然后使用它,但我不想這樣做。 我想要一個更合適和可擴展的解決方案,因為我在思考一個方面遇到了很多麻煩。

順便說說! 這是Swing中的GUI應用程序! 如果你想要圖像,請問=)!

編輯:現在,我的列表單元格渲染器壞了! 它剛剛工作...... =(

    @Override
    public Component getListCellRendererComponent(JList list, Object value,
            int index, boolean isSelected, boolean cellHasFocus) {

        Product product = (Product) value;

        return this;
       }
    }

默認情況下,調用模型中對象的toString()方法以顯示列表元素。 並且您的Product.toString()方法返回Product [description=descrion test, name=test]

如果要顯示其他內容,請使用ListCellRenderer,如關於JList的swing 教程中所述。

編輯:你的渲染器有一個錯誤:它沒有設置返回組件的文本(這是一個JLabel)。 它應該是:

Product product = (Product) value;
setText(product.getName());
return this;

暫無
暫無

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

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