2013-03-20 84 views
1

我有一個jtextfield,我可以添加一個元素,並通過點擊一個按鈕,我想將它添加到jlist, 現在我遇到的問題是,通過單擊按鈕它將添加我想要的元素,但是當我向列表中添加另一個元素時,舊的元素不見了,並且新的元素出現在它的位置。 這裏是我的代碼:通過點擊jbutton添加元素從jtextarea到jlist

private void addActionPerformed(java.awt.event.ActionEvent evt) {          

    DefaultListModel model1= new DefaultListModel(); 

    model1.addElement(desc.getText()); 
    jList2.setModel(model1); 
    jList2.setSelectedIndex(0); 
    desc.setText(""); 
} 

任何人都可以幫助我嗎? 謝謝

+0

只調用'model1.addElement(desc.getText());''從Jbutton將ActionListener',不以re_create'JList',其'DeafaultListModel',也沒有增加新的項目'( s)'通過這種方式到已經可見的Swing GUI,爲更快地發佈[SSCCE](http://sscce.org/)提供更好的幫助,短小的,可運行的,可編譯的,幾乎就是問題 – mKorbel 2013-03-20 14:38:55

+0

閱讀Swing教程中的部分關於[如何使用列表](http://docs.oracle.com/javase/tutorial/uiswing/components/list.html)的一個工作示例。這是從基礎教程開始,而不是論壇。 – camickr 2013-03-20 15:09:58

回答

2

每次按鈕被點擊您要創建一個新的DefaultListModel和添加元素對這個品牌新的列表。因此,您不能將它們全部添加到同一個列表中。

相反定義DefaultListModel MODEL1 addActionPerformed方法之外,並使用參考對象內類似如下:

DefaultListModel model1= new DefaultListModel(); 

private void addActionPerformed(java.awt.event.ActionEvent evt) {          
     model1.addElement(desc.getText()); 
     jList2.setModel(model1); 
     jList2.setSelectedIndex(0); 
     desc.setText(""); 

} 
+0

謝謝你工作:) – ralph 2013-03-20 14:51:37

1

您每次單擊JButton時都會替換JList型號。相反,您可以在啓動時在課程級別使用一個DefaultListModel,並將其添加到該級別。

+0

我不明白,你介意給我舉個例子嗎? – ralph 2013-03-20 14:41:39

+0

@ralph請檢查我的答案請 - 我已經展示瞭如何去做 – 2013-03-20 14:44:55

0
// Only once (may be in constructor), 
// don't put this code in ActionListener method actionPerformed(). 
DefaultListModel model1 = new DefaultListModel(); 

其餘的代碼,因爲它是。

0
listModel = new DefaultListModel(); 
    listModel.addElement("Jane Doe"); 
    listModel.addElement("John Smith"); 
    listModel.addElement("Kathy Green"); 


    list = new JList(listModel); 
public void actionPerformed(ActionEvent e) { 
    int index = list.getSelectedIndex(); 
    listModel.remove(index); 

    int size = listModel.getSize(); 

    if (size == 0) { //Nobody's left, disable firing. 
     fireButton.setEnabled(false); 

    } else { //Select an index. 
     if (index == listModel.getSize()) { 
      //removed item in last position 
      index--; 
     } 

     list.setSelectedIndex(index); 
     list.ensureIndexIsVisible(index); 
    } 
}