web-dev-qa-db-ja.com

JComboBoxにアイテムがすでに存在するかどうかを確認していますか?

後者を繰り返し処理する以外に、JComboBoxに項目がすでに存在するかどうかを確認する簡単な方法はありますか?これが私がやりたいことです:

 Item item = ...;
 boolean exists = false;
 for (int index = 0; index < myComboBox.getItemCount() && !exists; index++) {
   if (item.equals(myComboBox.getItemAt(index)) {
     exists = true;
   }
 }
 if (!exists) {
   myComboBox.addItem(item);
 }

ありがとう!

19

DefaultComboBoxModel を使用し、 getIndexOf(item) を呼び出して、アイテムがすでに存在するかどうかを確認します。アイテムが存在しない場合、このメソッドは-1を返します。ここにいくつかのサンプルコードがあります:

DefaultComboBoxModel model = new DefaultComboBoxModel(new String[] {"foo", "bar"});
JComboBox box = new JComboBox(model);

String toAdd = "baz";
//does it exist?
if(model.getIndexOf(toAdd) == -1 ) {
    model.addElement(toAdd);
}

(実際には、indexOfはアイテムのリストをループして、探しているアイテムを見つけます。)

30
dogbane

これで確認してください:

if(((DefaultComboBoxModel)box.getModel()).getIndexOf(toAdd) == -1) {
  box.addItem(toAdd );
}

または

if(((DefaultComboBoxModel)box.getModel()).getIndexOf(toAdd) < 0) {
  box.addItem(toAdd );
}
5
chepe lucho