2016-04-13 3 views
-1

У меня есть jComboBox, бывает, что у меня может быть такое же значение больше, чем на элементе. В этом случае при выборе одного из них выбор всегда относится к первому элементу списка. Сразу после щелчка. У кого-то это было? У некоторых есть решение, поэтому выбор не меняется?jComboBox изменяется selectedItem при выборе повторного ввода в первый список

Когда я выбираю:

http://i.stack.imgur.com/IjlYM.png

Проверка снова:

http://i.stack.imgur.com/c1lcQ.png

ответ

0

случается так, что я может иметь такое же значение для более чем на ст.

Тогда похоже, что вы добавляете специальный объект в поле со списком.

Если оно отображает одно и то же значение, но является другим элементом, тогда вам необходимо реализовать метод equals() в объекте, чтобы можно было выбрать подходящий объект.

Если вам нужна дополнительная помощь, разместите надлежащий номер SSCCE, который демонстрирует проблему, потому что у нас недостаточно информации, чтобы угадать, что вы можете делать.

+0

Это те же коды здесь http://stackoverflow.com/questions/36555069/entities-with-same-name-inserting-always-for-the-first-id, я просто задал другой вопрос, потому что я думал это была какая-то проблема в моей логике, теперь я думаю, что это больше связано с компонентом 'jcombobox' – Rodrigo

+0

Это не SSCCE. SSCCE - это упрощенный код, полностью содержащийся в одном классе, который мы можем копировать, компилировать и тестировать. Таким образом, у вас будет простой объект Student (с несколькими параметрами). Затем вы создаете пару учеников и добавляете их в поле со списком. Затем вы добавляете поле со списком в рамку. Таким образом, класс Student может быть 20 строк кода и код для создания кадра еще 20 строк кода. Затем опубликуйте SSCCE, и мы можем помочь. Все остальное в этой публикации не связано с вопросом. – camickr

0

JComboBox всегда пытается синхронизировать то, что выбрано в списках, с тем, что отображается в поле дисплея. Для этого он последовательно ищет список для соответствия поля редактора. Поэтому он всегда найдет первый, если в списке есть одинаковые элементы. Таким образом, вы не можете просто использовать объекты String, если есть возможность для идентичных строк в списке. Вам нужно сделать то, что сказал @camickr, и использовать пользовательский объект, который имеет способ отличить два объекта, метод toString() возвращает одно и то же (если вы используете модель и редактор по умолчанию).

Смежные вопросы