Java: автоматическое обновление первичного ключа JTable - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть эта JTable, имеющая AbstractTableModel в качестве модели.Исходное содержимое анализируется в двумерном массиве Object из универсального ArrayList для сущности системы.Также в модели isCellEditable переопределяется в отношении целостности данных.После настройки модели я установил некоторый редактор ячеек с указанными объектами свинга.

Моя проблема сейчас заключается в том, что.Как я могу заполнить столбец [0] таблицы, если произойдет изменение пустой строки.Кроме того, как только произойдет обновление пустой строки, в JTable будет автоматически добавлена ​​другая пустая строка.

Собираюсь ли я использовать TableModelListener?Как я могу реализовать это, не сбрасывая модель JTable снова.

Скорее всего, это похоже на Microsoft Access - Форма представления таблиц / запросов.

Ваш ответ и комментарий будут высоко оценены.

Спасибо, Кирилл Н

Ответы [ 2 ]

1 голос
/ 15 февраля 2011

У меня есть эта JTable, имеющая в качестве модели AbstractTableModel.

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

Я бы просто использовал DefaultTableModel.Он уже реализует эти методы и предоставляет метод addRow (...), который позволяет динамически увеличивать количество строк в модели.

Собираюсь ли я использовать TableModelListener?

Это один из способов.Каждый раз, когда данные в ячейке меняются, вы проверяете всю строку, чтобы убедиться, что она заполнена.Если это последняя строка в таблице, вы можете просто вызвать метод addRow (...) в DefaultTableModel, чтобы добавить еще одну строку.

0 голосов
/ 15 февраля 2011

Ну, во-первых, не работайте с массивами двумерных объектов, а с списком ваших POJO.

Вы можете взглянуть на один из моих простых примеров кода здесь: http://puces -samples.svn.sourceforge.net / ViewVC / Puces-образцы / багажник / sessionstate-люкс / sessionstate-образец / SRC / Blogspot / Puce / sessionstate / образец / ParticipantTableModel.java? Пересмотр = 2 & вид = разметки

У вас есть доступ к локальной базе данных? Если да, то вы можете использовать сущности JPA непосредственно в вашей табличной модели.

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

...