コンボボックスからすべてのアイテムを削除する必要があります
int itemCount = combo.getItemCount();
for(int i=0;i<itemCount;i++){
combo.removeItemAt(0);
}
このコードは、最後のアイテムを除くすべてのアイテムを削除します。 NullPointerExceptionが発生します。それを修正する方法は?
問題のコードは通常は機能します。ただし、スレッドの問題のようです。別のスレッドがアイテムをいじっている可能性があります。
ただし、removeAllItems();
メソッドを使用する方がよいと思います。
combo.removeAllItems();
JComboBox.removeAllItems() はどうですか?
あなたが使用することができます
this.combo.removeAllItems();
jComboBox内のすべてのアイテムを削除します。
2行目:
combo.removeItemAt(0)
;
_0
_の代わりにi
にする必要があると思います。
次のように逆の順序で実行します。
_for(int i=combo.getItemCount()-1;i>=0;i--){
combo.removeItemAt(i);
}
_
しかし、私の場合、combo.removeAllItems()
は正常に機能します
.removeAllItems()メソッドを使用して、コンボボックスからすべてのアイテムを削除します。
removeAllItems()はすべてのものを削除しますが、コンボボックスにデータを追加した後は表示されず、nullPointExceptionが表示されます
通常、これは、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 ();
}
}
これを使用してコンボボックスからすべての要素を削除します:
DefaultComboBoxModel model = (DefaultComboBoxModel) ComboBox.getModel();
model.removeAllElements();
別のスレッドに関連しているという仮定は、常に正しいとは限りません。問題の原因はスレッド自体である可能性があります。
この例外は、コンボアイテムが削除されたときにイベントがトリガーされ、このイベント処理メソッドでは引き続きコンボボックスアイテムを参照するために発生する可能性があります。
たとえば、コード内のどこか(actionPeformed()以外)でcombo.removeItemAt(0)またはremoveAllItems()を使用してコンボボックスの最後のアイテムを削除しても、イベントactionPerformedが発生/実行されます。ただし、多くの場合、actionPerformed()メソッドには、ユーザーアクション(ユーザーがコンボボックスのどこかをクリックした)に反応するコードが含まれています。したがって、最後のアイテムが削除されると、コンボボックスにアイテムがなくなり、actionPerformed()でアイテムまたはインデックスを参照すると例外が発生します。
解決策これに対する解決策は、コードをactionPerformed()から例に移動することです。何をしたいかに応じて、mouseClicked()または別のイベントハンドラー。