Java — TableModel и DefaultTableModel

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

TableModel model = new DefaultTableModel(data, tabs);

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

DefaultTableModel model = new DefaultTableModel(data, tabs);

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

Спасибо!


person mark    schedule 18.03.2012    source источник
comment
TableModel — это интерфейс, DefaultTableModel — это конкретная реализация, которая помимо прочего предоставляет удобный способ добавления строк.   -  person tenorsax    schedule 18.03.2012
comment
@Niles, причина, по которой model не идет с методами, начинается в строке: TableModel model = new DefaultTableModel(data, tabs); . model следует привести к DefaultTableModel, чтобы методы были реализованы в приведенном классе. В любом экземпляре этого типа вам нужно будет привести свой объект, если вы добавите методы, которых нет в реализованном классе.   -  person Sebastian    schedule 19.03.2012


Ответы (1)


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

person Hovercraft Full Of Eels    schedule 18.03.2012
comment
DefaultTableModel — удобное руководство по соответствию . - person trashgod; 19.03.2012
comment
AbstractTableModel предоставляет много вещей, которые должен иметь каждый TableModel, но сам код не очень интересен (например, управление слушателями). Это удобный класс для создания JTable на основе ваших собственных данных. Используй это. - person Jakub Zaverka; 19.03.2012