簡體   English   中英

JList 添加和刪除項目 (Netbeans)

[英]JList adding and removing items (Netbeans)

我正在嘗試從我的 jList (jList1) 添加和刪除項目,但它不起作用。 我已經在 stackoverflow 上搜索了其他有同樣問題的人,但是當他們的問題得到解決時,我不斷收到錯誤消息。 所以這就是我聲明 jList 的方式:

jList1.setModel(new javax.swing.AbstractListModel() {
        String [] strings = lijstItems;
        public int getSize() {
            return strings.length;
        }
        public Object getElementAt (int i) {
            return strings[i];
        }
    });

所以現在我制作了這些按鈕來添加和刪除列表中的項目:

private void addHostActionPerformed(java.awt.event.ActionEvent evt) {                                        
    // TODO add your handling code here:

    DefaultListModel model = (DefaultListModel) jList1.getModel();
    model.add(2, "item");
    // THIS DOES NOT WORK...

}

private void deleteHostActionPerformed(java.awt.event.ActionEvent evt) {                                           
    // TODO add your handling code here:

}

我嘗試了很多東西,但它們不起作用! 有人可以幫我嗎?

謝謝!

您將列表的模型設置為AbstractListModel 不能將模型轉換為DefaultListModel 嘗試這樣做會給你一個ClassCastException所以將模型設置為DefaultListModel

jList1.setModel(new DefaultListModel());

而且您可能希望使用DefaultListModel#addElement(element)而不是每次都將元素添加到相同的索引中,使用add(2, element)

這就是我聲明 jList 的方式:

為什么要創建自定義 ListModel? 只需使用 DefaultListModel。 您無需創建自定義模型來簡單地存儲字符串數據。

然后,您可以閱讀 Swing 教程中關於如何使用列表的部分,作為一個工作示例,該示例通過使用“雇用”和“觸發”按鈕完全滿足您的要求。

為了在 JList 中保留現有項目並添加新項目,我必須獲取模型 ListModel,然后將項目添加到 DefaultListModel,因為 ListModel 沒有 addElement 方法。 我是這樣實現的:

   DefaultListModel<String> model = new  DefaultListModel<String>();
   ListModel model2 = jList.getModel();
   for (int i=0; i< model2.getSize();i++){
        model.addElement(model2.getElementAt(i).toString());              
        }
   model.addElement("new element");
   jList.setModel(model);

暫無
暫無

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

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