Создание ячейки видимой в JTable при расширении AbstractTableModel - PullRequest
0 голосов
/ 28 декабря 2010

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

Я уже сделал это, когда использовал JTable по умолчанию, но как мне это сделать, когда мы расширяем AbstractTableModel?

Ответы [ 2 ]

1 голос
/ 29 декабря 2010

Модели предназначены для хранения данных и уведомления представлений, когда данные изменились.Он уведомляет представление об изменении данных путем запуска событий.Это обязанность зрения слушать эти события.Поэтому модель никогда не знает напрямую, какой вид обновляется.Функциональность этого типа НЕ должна быть частью модели.

Один из подходов может заключаться в использовании TableModelListener.Вы можете создать TableModelListner с таблицей в качестве параметра.Затем, когда данные будут изменены, слушатель будет уведомлен.Затем вы можете вызвать table.scrollRectToVisible (...) для таблицы.Однако при таком подходе вы не сможете различить изменения, которые были применены непосредственно через TableModel, и изменения, которые были сделаны через сам JTable.

0 голосов
/ 28 декабря 2010

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

Вы можете использовать EventListenerList в DefaultTableModel для уведомления любых слушателей.

...