Редактор JTable с динамическими данными - PullRequest
0 голосов
/ 14 июля 2009

У меня есть табличная модель, которая заполняется живым (внешним) источником данных, который обновляется каждые XX секунд. Данные отображаются в виде JTable.

Пользователь может переопределить данные в ячейке таблицы через celleditor, который расширяет AbstractCellEditor. Если пользователь щелкает, код проверяет, равно ли новое значение значению в табличной модели. Если это не так, предполагается, что это переопределение.

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

Какая стандартная логика и реализация для этого?

Ответы [ 2 ]

0 голосов
/ 15 июля 2009

Как определить, есть ли у пользователя внесли изменения или нет?

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

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

0 голосов
/ 14 июля 2009

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

Вы можете заполнить это состояние переопределенным методом setValueAt(Object,int,int) в вашем TableModel. Этот метод будет вызван JTable, когда ваше AbstractCellEditor завершит редактирование.

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