2012-03-18 3 views
1

Я потратил довольно много времени, пытаясь выяснить способ добавления новой строки в JTable, первоначально ищут методы по следующей модели:Java - TableModel и DefaultTableModel

TableModel model = new DefaultTableModel(data, tabs); 

Однако некоторые быстрый поиск заставит меня найти, что метод addRow был в классе DefaultTableModel. Таким образом, изменяя его к следующему был успешным:

DefaultTableModel model = new DefaultTableModel(data, tabs); 

Однако, я создал много успешных программ, где я была предварительно построен массив с помощью TabelModel, поэтому я немного запутался, почему мне нужно переключитесь на DefaultTableModel для достижения этого решения и если есть причина и цель для каждого? Например: Можно ли просто использовать TabelModel с заранее построенным массивом и почему моя вышеприведенная реализация TableModel не связана с методами добавления новых данных?

Спасибо!

+1

TableModel - это интерфейс, DefaultTableModel - это конкретная реализация, которая, среди прочего, обеспечивает удобный способ добавления строк. – tenorsax

+0

@Niles, причина, по которой 'model' не приходит с методами, начинается в строке:' TableModel model = new DefaultTableModel (data, tabs); '. 'model' должен быть отправлен в' DefaultTableModel', чтобы внедрить методы в класс cast. В любом экземпляре этого типа вам нужно будет передать свой объект, если вы добавите методы, которые не находятся в реализованном классе. – Sebastian

ответ

4

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

+3

['DefaultTableModel'] (http://developer.classpath.org/doc/javax/swing/table/DefaultTableModel-source.html) - удобное руководство для _appro_. – trashgod

+2

'AbstractTableModel' предоставляет много вещей, которые должны иметь каждый' TableModel', но сам код не очень интересен (например, управление прослушивателем). Это удобный класс для создания JTable на ваших собственных данных. Используй это. –

Смежные вопросы