Почему JComboBox добавляет несколько экземпляров элементов? - PullRequest
0 голосов
/ 24 сентября 2010

Этот Java Swing JComboBox модифицируется на основании изменений в конфигурации системы. В примере изображения «Нажмите для выбора» - это случай, когда ничего не выбрано и в конфигурации есть один «Тестовый блок», но «Нажмите для выбора» дважды отображается в раскрывающемся списке. Дополнительный элемент «Нажмите для выбора» ведет себя как элемент 0, поэтому он функционален, но выглядит таким дурацким образом. Есть идеи?

public class Controller extends javax.swing.JFrame implements Observer {
    ...
    public void update(Observable o, Object arg) {
        jComboBox.removeAllItems();
        jComboBox.addItem("Press to Select");
        String[] names = Configuration.getNames();
        for (String n : names) {
            jComboBox.addItem(n);
        }
        ...

alt text

Ответы [ 2 ]

0 голосов
/ 25 сентября 2010

тупая ошибка. Добавляем его дважды (@Geoffrey). Слишком долго, чтобы найти 2-е дополнение в другом классе. Моя бабушка предупредила меня, чтобы я не старел.

0 голосов
/ 24 сентября 2010

Вызывается ли метод update потоком обработки событий или каким-либо другим потоком?(войдите SwingUtilities.isEventDispatchThread(), если вы не уверены).Если это какой-то другой поток, переместите свое обновление в Runnable и используйте SwingUtilities.invokeLater(), чтобы запланировать его выполнение на EDT.

Попробуйте setSelectedItem(null) как часть вашего обновления.

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