web-dev-qa-db-ja.com

Java)のコンボボックスからすべてのアイテムを削除する

コンボボックスからすべてのアイテムを削除する必要があります

    int itemCount = combo.getItemCount();

    for(int i=0;i<itemCount;i++){
        combo.removeItemAt(0);
     }

このコードは、最後のアイテムを除くすべてのアイテムを削除します。 NullPointerExceptionが発生します。それを修正する方法は?

5
chathura

問題のコードは通常は機能します。ただし、スレッドの問題のようです。別のスレッドがアイテムをいじっている可能性があります。

ただし、removeAllItems();メソッドを使用する方がよいと思います。

combo.removeAllItems();
26
Dan D.

JComboBox.removeAllItems() はどうですか?

3
Shivan Dragon

あなたが使用することができます

this.combo.removeAllItems();

jComboBox内のすべてのアイテムを削除します。

2
Rakib13

2行目:

combo.removeItemAt(0);

_0_の代わりにiにする必要があると思います。

次のように逆の順序で実行します。

_for(int i=combo.getItemCount()-1;i>=0;i--){
    combo.removeItemAt(i);
}
_

しかし、私の場合、combo.removeAllItems()は正常に機能します

2
Asad

.removeAllItems()メソッドを使用して、コンボボックスからすべてのアイテムを削除します。

1
Kumar

removeAllItems()はすべてのものを削除しますが、コンボボックスにデータを追加した後は表示されず、nullPointExceptionが表示されます

0
user2694996

通常、これは、JComboBoxに関連付けられたイベントがあるために発生します。 JComboBoxに動作する制御項目がある場合、これは解決されます。次に例を示します。

jComboBoxExample.addActionListener (new ActionListener () {
   public void actionPerformed (ActionEvent e) {
     do_run ();
   }
});



public void do_run() {
  int n=jComboBoxPerfilDocumentos.getItemCount(); <--THIS IS THE SOLUTION
  if (n> 0) { 
    String x = jComboBoxPerfilDocumentos.getSelectedItem (). ToString ();
  }
}
0
jose

これを使用してコンボボックスからすべての要素を削除します:

DefaultComboBoxModel model = (DefaultComboBoxModel) ComboBox.getModel();
model.removeAllElements();
0
SBS

別のスレッドに関連しているという仮定は、常に正しいとは限りません。問題の原因はスレッド自体である可能性があります。

この例外は、コンボアイテムが削除されたときにイベントがトリガーされ、このイベント処理メソッドでは引き続きコンボボックスアイテムを参照するために発生する可能性があります。

たとえば、コード内のどこか(actionPeformed()以外)でcombo.removeItemAt(0)またはremoveAllItems()を使用してコンボボックスの最後のアイテムを削除しても、イベントactionPerformedが発生/実行されます。ただし、多くの場合、actionPerformed()メソッドには、ユーザーアクション(ユーザーがコンボボックスのどこかをクリックした)に反応するコードが含まれています。したがって、最後のアイテムが削除されると、コンボボックスにアイテムがなくなり、actionPerformed()でアイテムまたはインデックスを参照すると例外が発生します。

解決策これに対する解決策は、コードをactionPerformed()から例に移動することです。何をしたいかに応じて、mouseClicked()または別のイベントハンドラー。

0
Guido