Динамически изменить JComboBox - PullRequest
22 голосов
/ 07 января 2011

Я успешно извлекаю значения данных из базы данных. Я также сохранил их в массиве String[]. Мне нужно загрузить массив String как элементы JComboBox в ответ на выполненное действие ключа. Как я могу перезагрузить элементы JComboBox всякий раз, когда нажимается клавиша, поскольку извлекаемые значения зависят от нажатой клавиши. Проще говоря, мне нужно динамически обновить JComboBox элементов.

Ответы [ 4 ]

36 голосов
/ 07 января 2011
DefaultComboBoxModel model = new DefaultComboBoxModel( yourStringArray );
comboBox.setModel( model );
6 голосов
/ 26 марта 2014

Это демонстрация для демонстрации модели комбинированного окна по умолчанию

public class ComboPanel extends JPanel {

    JComboBox jcbo;
    // this is constructor
    public ComboPanel(ArrayList<String> items) {
        jcbo = new JComboBox();
        // getting exiting combo box model
        DefaultComboBoxModel model = (DefaultComboBoxModel) jcbo.getModel();
        // removing old data
        model.removeAllElements();

        for (String item : items) {
            model.addElement(item);
        }

        // setting model with new data
        jcbo.setModel(model);
        // adding combobox to panel
        this.add(jcbo);    
    }
}

Надеюсь, это мало поможет:)

6 голосов
/ 07 января 2011

У вас есть несколько вариантов. Вы можете использовать removeAllItems() (или один из других методов удаления) и addItem(Object anObject) для управления выбираемыми объектами. Или вы можете реализовать ComboBoxModel и позволить ему обрабатывать данные из вашего массива.

0 голосов
/ 21 марта 2018

Он также работает без DefaultComboBoxModel ...

JComboBox op=new JComboBox(new String[] {"d","e","f"});
op.removeAllItems();
String[] new_entries=new String[] {"a","b","c"}
for (String s : new_entries) {
     op.insertItemAt(s, op.getItemCount());
}
op.setSelectedIndex(0);

Угадайте, какие значения вы увидите ...

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