2012-11-28 12 views
12

guiにjListがあり、Addボタンでデータを追加できます。 私はすべての要素をクリアするクリアと呼ばれる別のボタンを追加したい。 私はこれを試しました:JavaでJListをクリアするには?

private void jButtonClearActionPerfomed(java.awt.event.ActionEvent evt) 
{ 
    DefaultListModel listmodel=new DefaultListModel(); 
    jList1 = new JList(listmodel); 
    if(evt.getSource()==jButtonClear) JList.setListData(new String[0]; 
    else listmodel.removeAllElements(); 
} 

[追加]ボタンをクリックすると、要素が追加されます。

[クリア]ボタンをクリックすると、要素が削除されます。

しかし、私は[追加]ボタンを再度クリックしても何もjList1

答えて

18

一部の項目を削除するためにJListウィジェット全体を再初期化しないでください。代わりに、リストモデルの変更はUIに自動的に同期されるため、リストモデルを操作する必要があります。これはあなたの「すべてクリア」機能を実装するのに十分である、あなたは確かにDefaultListModelを使用していると仮定すると:私がクリックしたときに

private void jButtonClearActionPerfomed(java.awt.event.ActionEvent evt) { 
    if(evt.getSource()==jButtonClear) { 
     DefaultListModel listModel = (DefaultListModel) jList1.getModel(); 
     listModel.removeAllElements(); 
    } 
} 
7

ではありません多くの問題、最初はあなたの例は、コンパイルの問題に満ちているので、私はそれはあなたの実際のコードではありません期待していることが行われています。

JListには、setListDataという静的メソッドがありません。代わりにjList1を意味すると思います。

あなたはきれいなボタンをクリックするたび、あなたは新しいモデルや部品...

private void jButtonClearActionPerfomed(java.awt.event.ActionEvent evt) 
{ 
    // ?? 
    DefaultListModel listmodel=new DefaultListModel(); 
    jList1 = new JList(listmodel); 
    // ?? 
    if(evt.getSource()==jButtonClear) jList1.setListData(new String[0]); 
    else listmodel.removeAllElements(); 
} 

を作成しているあなたは成功し、これまでjList1がで指していたものを間接参照しましたので、任意の時間は、あなたがしようとの対話しますそれで、あなたはもはや画面上のコンポーネントと対話していません。

他の問題あなたは基本的にこのような何かを試してみてください「私のリストには何も追加しないてください」、

を言うようなものですsetListData方法、に空の配列を供給しています。

private void jButtonClearActionPerfomed(java.awt.event.ActionEvent evt) 
{ 
    DefaultListModel listmodel = (DefaultListModel)jList1.getModel(); 
    if(evt.getSource()==jButtonClear) { 
     listmodel.removeAllElements(); 
    } else { 
     listModel.addElement(new String[]{"Hello"}); 
    } 
} 
+0

を試してみてくださいクリアボタンをクリックすると、新しいデータが追加されますが、これは元のデータではありません...しかし、これを試してみて、すべてのデータをクリアしますが、[追加]ボタンをクリックすると新しいデータが追加されますが、 DefaultListModel listmodel =(DefaultListModel)JList1.getModel(); evt.getSource()== jButtonClear {listmodel.removeAllElements(); – Pan24112012

+0

私は条件を変更しました。(クリアすると 'removeAll'が呼び出されます)そうでなければ、新しい要素が追加されます。私はあなたのコードを盗んだので、それを修正することは慎重ではなかった。これが別のアクションイベントと共有されているかどうかは分かりません。そうでない場合は、 'addElement'行を削除してください – MadProgrammer

+0

はい、私はここに新しいので、私はここにコードを置くことはできませんが、追加ボタンのコードの最後に何ですか? jList1.repaint(); \t jPanelVizualisationOptions1.update(); \t currentPanel.refresh(); – Pan24112012

1
DefaultListModel model=new DefaultListModel(); 
     model.clear(); 
    jList1.setModel(model); 

は今、あなたの修正とcopmileエラーのOKこの

関連する問題