Работаете с данными и JTable? - PullRequest
1 голос
/ 09 июля 2009

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

Ранее я работал с Flex и Actionscript, и это очень легко сделать с привязкой данных, поэтому мне просто интересно, как это делается в Java.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 09 июля 2009

Вы, вероятно, найдете и руководство по Java JTable , и документацию по API JTable , которое поможет понять, как работает JTable, но в противном случае вот краткое изложение.

Предпосылка JTable заключается в том, что он связан с объектом, который реализует интерфейс TableModel, который по умолчанию является экземпляром DefaultTableModel. Объект модели таблицы состоит из списка столбцов, каждый из которых имеет свой собственный тип данных (String и Boolean в вашем случае) и список строк, содержащих фактические данные для таблицы.

Всякий раз, когда JTable рисуется кодом рисования свинга, он повторно вызывает метод:

public Object getValueAt(int row, int col)

Таким образом, когда вы добавляете данные в табличную модель, они всегда отображаются так, как вы ожидаете при следующем обновлении экрана (динамически).

Единственное, о чем вам действительно нужно беспокоиться, это получить данные из вашего объекта в табличную модель и вернуться обратно. Кроме этого, JTable берет на себя все тяжелые работы.

2 голосов
/ 10 июля 2009

Несмотря на то, что реализация TableModel достаточно проста для простых случаев, вы, возможно, захотите использовать настоящий подход связывания (мой любимый Glazed Lists - посмотрите 30-секундное видео о том, насколько это легко, и вы будете победил). Привязка Beans (теперь Better Beans Binding ) также имеет реализацию наблюдаемых списков, которые могут быть полезны (хотя я очень предпочитаю подход Glazed Lists)

2 голосов
/ 09 июля 2009

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

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