Как я могу обновлять свой блок выбора каждый раз, когда изменяется другой блок выбора? - PullRequest
0 голосов
/ 02 мая 2019

так что у меня есть эта проблема ... У меня есть 2 коробки выбора, первая содержит марки гитар, а вторая - тип гитар этой марки. Я использую Item Listener, и он работает, единственная проблема заключается в том, что он продолжает добавлять. Например: я выбираю 2 раза одну и ту же марку, она будет писать 2 раза тип гитары, и я просто хочу типы гитар. Как я могу это исправить? Вот мой код слушателя:

private class ItemHandler implements ItemListener {
    @Override
    public void itemStateChanged(ItemEvent event) {
        try {
            if(event.getSource() == choice_GuitarBrand) {
                /*I have a guitar array that will fetch the associated ID of the selected
                item given the name */
                int id = cmd.fetchGuitarID(choice_GuitarBrand.getSelectedItem());
                for(Guitar g : cmd.getSpecificGuitar(id)) {
                    choice_TypeOfGuitar.add(g.getName());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }
}

1 Ответ

0 голосов
/ 02 мая 2019

Вам необходимо удалить объекты в списке перед добавлением новых:

private class ItemHandler implements ItemListener {
    @Override
    public void itemStateChanged(ItemEvent event) {
        try {
            if(event.getSource() == choice_GuitarBrand) {
                /*I have a guitar array that will fetch the associated ID of the selected
                item given the name */
                int id = cmd.fetchGuitarID(choice_GuitarBrand.getSelectedItem());
                choice_TypeOfGuitar.removeAll(); // see https://docs.oracle.com/javase/7/docs/api/java/awt/Choice.html#removeAll()
                for(Guitar g : cmd.getSpecificGuitar(id)) {
                    choice_TypeOfGuitar.add(g.getName());
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        } 
    }
}

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