私のコードは実際には非常に単純です。シンプルで類似したコードがこの記事からのものであることがわかりました。
最初は、1つのコンボボックスがあります。itemStateChanged()というリスナーがあります。このリスナーに追加する私の目的は次のとおりです。「ユーザーがドロップボックスからアイテムをクリック(選択)したときにコードを実行する」.
Cmb_ItemCategory = new javax.swing.JComboBox();
Cmb_ItemCategory.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Loading..." }));
Cmb_ItemCategory.addItemListener(new java.awt.event.ItemListener() {
public void itemStateChanged(java.awt.event.ItemEvent evt) {
Cmb_ItemCategoryItemStateChanged(evt);
}
});
private void Cmb_ItemCategoryItemStateChanged(java.awt.event.ItemEvent evt) {
if(evt.getStateChange() == java.awt.event.ItemEvent.SELECTED){
System.err.println("Sombody click or change my model content");
}
}
コードの背後で、いくつかのデータを取得してから、 removeAllItems() のメソッドを呼び出します。そして、(新しいデータから) 新しいモデルをそれに設定します。
-- at another line of code ---
Cmb_ItemCategory.removeAllItems();
Cmb_ItemCategory.setModel(newModel);
removeAllItem()メソッドを実行すると、itemStateChanged() が呼び出されることに気づきました。一度呼ばれた。
では、ユーザーがクリック (選択) したときにのみ呼び出され、removeAllItems() が呼び出されたときに呼び出されないようにする方法は?
この記事に似ています。しかし、removingItems ケースではありません。CMIIW。