JComboBox в JTable не обновляет таблицу мгновенно при смене элемента - PullRequest
0 голосов
/ 21 октября 2018

У меня есть JTable с JComboBoxes в качестве редактора ячеек для одного из столбцов.Когда пользователь щелкает один из параметров в одном из выпадающих списков, ячейка таблицы должна быть мгновенно установлена ​​на любой параметр, выбранный в выпадающем списке.К сожалению, этого не произойдет, пока пользователь не щелкнет в другом месте или не нажмет Enter.

Я понимаю, что могу просто взять значение из выпадающего списка, но я хотел бы сохранить таблицу в файл, как только появится опциявыбрана из любого выпадающего списка в таблице, и я не смог найти способ динамически определить, к какой строке принадлежит выпадающий список, чтобы таблица могла обновляться при изменении элемента.

Есть ли способполучить таблицу для обновления с выбранным значением, как только будет запущен прослушиватель элемента со списком?

Вот пример, демонстрирующий эту проблему:

public static void main(String args[]) {
    JFrame frame = new JFrame();
    frame.setSize(450, 250);

    JTable table = new JTable(2, 1);

    TableColumn testColumn = table.getColumnModel().getColumn(0);

    JComboBox<String> comboBox = new JComboBox<String>();
    comboBox.addItem("Item1");
    comboBox.addItem("Item2");
    comboBox.addItem("Item3");
    testColumn.setCellEditor(new DefaultCellEditor(comboBox));

    comboBox.addItemListener(new ItemListener(){
        @Override
        public void itemStateChanged(ItemEvent e) {
            if (e.getStateChange() == ItemEvent.SELECTED){
                System.out.println(table.getValueAt(0, 0));
            }
        }
    });

    frame.add(table);
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);
}

1 Ответ

0 голосов
/ 21 октября 2018

Есть ли способ получить таблицу для обновления с выбранным значением, как только будет запущен прослушиватель элемента списка?

Не зависит от ItemListener (или ActionListener),Эти события просто указывают на то, что выбранный элемент поля со списком изменился.

Теперь редактор возьмет управление на себя, удалит себя из таблицы и обновит TableModel выбранным значением.

Если вы хотите знать, когда данные изменяются в TableModel, добавьте TableModelListener к TableModel. * Сгенерируется

A TableModelEvent, указывающее, что данные изменились.

См. Простой пример JTable -> TableModeListener .

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