1

要素を追加できるjtextfieldがあり、ボタンをクリックして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("");
} 

誰でも私を助けることができますか?ありがとうございました

4

4 に答える 4

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("");

} 
于 2013-03-20T14:38:27.683 に答える
1

JListをクリックするたびにモデルが置き換えられますJButtonDefaultListModel代わりに、起動時にクラスレベルで単一を使用して、それに追加することができます。

于 2013-03-20T14:37:10.110 に答える
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);
    }
}
于 2013-03-20T14:41:38.490 に答える
0
// Only once (may be in constructor),
// don't put this code in ActionListener method actionPerformed().
DefaultListModel model1 = new DefaultListModel(); 

残りのコードはそのままです。

于 2013-03-20T14:40:18.777 に答える