2013-10-08 154 views
1

我有一個填充了書籍的Jlist,但是,我想要做的是,一旦選擇了其中一本書,我按下了一個按鈕,該按鈕應該可以讓書從列表中刪除。如何從jlist中刪除項目

我有了一回書方法如下

public void returnBook(Book aBook) 
{ 
    currentLoans.remove(aBook); 
    aBook.setBorrower(null); 
} 

在我的主要應用程序中的成員類我已經回書按鈕

private void theButtonActionPerformed(java.awt.event.ActionEvent evt) {           
    //!!!Return book 
    DefaultListModel model = (DefaultListModel) BooksOnLoan.getModel(); 
    Book selectedBook; 
    selectedBook = (Book)BooksOnLoan.getModel(); 
    model.remove(selectedBook); 
} 

下,下面的代碼正如你可以看到我我很不確定一旦按鈕被點擊,如何從列表中刪除項目。

+2

您的代碼是否編譯?如果不是,你會得到什麼錯誤?如果是這樣,當你運行該程序時會發生什麼? –

+0

我的代碼不能編譯,但是,我試圖從列表中刪除一個項目使用刪除,但是當我嘗試這個它提到這個「書不能轉換爲MenuComponent) 方法Container.remove(int)不適用 (參數不匹配;書不能轉換爲int)「 – Sky

+0

@Sky從你最後的評論(不是來自問題中的代碼),似乎你試圖從_list_中刪除。你不能這樣做 - 使用提到的Container或Component方法,你必須從列表模型中刪除元素。請參閱下面的答案。 – alterfox

回答

4

DefaultListModel中的「remove」方法適用於索引,因此您首先需要獲取要刪除的元素的索引並將其提供給remove方法。您可以在列表中使用以下方法:單選模式的getSelectedIndex方法(如果沒有選擇,您將得到-1),或getSelectedIndices(用於多選)。

如果在任何情況下您的列表在此之後保持不變,您需要在模型更改後刷新GUI。雖然我幾乎可以肯定你不需要那樣做,但爲將來而記住這個原則。

+1

你的回答是對的,我的是錯的。 1+ –