2014-05-20 132 views
4

我試圖從我的jList(jList1)添加和刪除項目,但它不起作用。 我在同一個問題上的其他人已經搜索了stackoverflow,但是當他們的問題解決了,我不斷收到錯誤。 所以這是我宣佈的jList:JList添加和刪除項目(Netbeans)

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: 

} 

我已經嘗試了很多東西,但他們不工作! 任何人都可以幫助我嗎?

謝謝!

回答

5

您將列表的型號設置爲AbstractListModel。您不能將模型投射到DefaultListModel。試圖這樣做會給你一個ClassCastException因此,將模型設置爲DefaultListModel

jList1.setModel(new DefaultListModel()); 

而且你可能想使用DefaultListModel#addElement(element)而不是添加的元素,每一次相同的指數,與add(2, element)

+0

好的,但是當我將模型設置爲AbstractListModel時,我無法使用model.addList方法? AbstractListModel model =(AbstractListModel)jList1.getModel(); model.addList(index,「string」); // addList給出錯誤 – ernie379

+1

我沒有告訴你轉到'AbstractListModel'。我說把模型設置爲一個'DefaultListModel'。 'AbstractListeModel' _沒有數據操作方法 –

+0

因此,如果我必須將模型設置爲'AbstractListModel'並將其轉換爲'DefaultListModel',那麼你應該說它應該工作? 但是,當我嘗試,我不能使用'.addElement' – ernie379

1

這是我宣佈的jList:

你爲什麼創建一個自定義ListModel?只需使用DefaultListModel。您不需要創建自定義模型來存儲String數據。

然後,您可以閱讀Swing教程How to Use Lists中的部分,以獲得一個正確使用「Hire」和「Fire」按鈕所需的工作示例。