JComboBox box = new JComboBox();
box.addItem("x");
box.addItem("x");
box.setSelectedIndex(1);
System.out.println(box.getSelectedIndex())
Этот код напечатает в консоль не 1, как ожидалось, а 0. Баг состоит в том, что метод getSelectedIndex() возвращает индекс первого попавшегося элемента, равного селектированному, причем сравнение выполняется методом equals().
В развернувшейся бурной дискуссии сотрудники Sun пытаются доказать, что данное поведение корректно, поскольку оба элемента x равны. Лично я не согласен: так мог бы вести себя метод getSelectedItem(), но от getSelectedIndex() я бы ожидал возврат выбранного индекса , а не какого-нибудь другого.
Багу #4133743 уже более 10-ти лет. Интересно состояние данного тикета: "11-Closed, Not a Defect, bug". :))
Фигасе логика у парней из Sun. Надо прижигать :).
Alexander Lototsky
15 сентября 2008 г. в 00:39Хотя тенденция такова, что они сейчас много времени уделяют именно UI-ным штучкам и красивостям. Тоже неплохо, вообще говоря...
А на старый баг всегда найдется воркараунд))
Sergey Borodavkin
21 ноября 2008 г. в 10:55