Проверка, имеет ли JComboBox значение по умолчанию или нет - PullRequest
2 голосов
/ 09 ноября 2011

РЕДАКТИРОВАТЬ: Поскольку термин «значение по умолчанию» сбивает с толку, я изменил его на « начальное значение.»

Это довольно интересный вопрос. Я искал ответ на сайте, но не нашел его.

Я пишу класс валидатора на Java, и я хотел бы проверить, есть ли у JComboBox начальное значение.

Обратите внимание, что я не проверяю, выбрал ли пользователь значение; просто если значение, которое выбрал пользователь, совпадает с начальным значением.

Например, допустим, есть следующие варианты:

Some Message Here
Item 1
Item 2
Item 3

... и т.д.. Текст «Some Message Here» будет исходным значением, и я бы сделал это, используя методы setSelectedIndex или setSelectedItem.

Проблема в том, что, как только пользователь выбирает другой элемент (скажем, элемент 1), больше не существует способа узнать, каким должно быть начальное значение.

Я не могу просто проверить «магическое число» (как, скажем, if (cb.getSelectedIndex() == 0)), потому что у класса валидатора нет способа узнать, действительно ли значение по индексу 0 соответствует начальному значению быть. (И это может не быть, например, в списке штатов США.)

Также я не могу использовать ни одного из слушателей событий. Подумайте о ситуации, когда пользователь выбирает «Элемент 1», а затем повторно выбирает «Некоторые сообщения здесь». Я хотел бы, чтобы это провалилось.

Есть идеи?

1 Ответ

1 голос
/ 27 ноября 2011

Для записи вот что я в итоге сделал:

Я воспользовался советом Дж. Б. Низета и велел кодеру передать начальное значение классу статического валидатора, например:

Validator.isDefault(myComboBox, myInitialIndex);

Тем не менее, я также перегружал его так, что вы можете просто вызвать его с помощью JComboBox, и индекс будет по умолчанию равен 0:

Validator.isDefault(myComboBox); // same as Validator.isDefault(myComboBox, 0);

Я, вероятно, также перегружу его, так что он принимает строку какВторой аргумент (и проверяет его, используя getSelectedItem()).

Если есть лучший способ сделать это, я не знаю, что это будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...