#java #mysql #swing #jtable
Вопрос:
Я попытался сгруппировать заголовок JTable, и для этого я хочу получить DefaultTableModel текущей JTable. Но когда я попытался получить табличную модель вот так:
DefaultTableModel dm=(DefaultTableModel) tblTet.getModel();
Это показывает следующее исключение:
org.jdesktop.привязка.JTableBinding$BindingTableModel не может быть приведен к javax.swing.table.Модель по умолчанию
Потому что я использую привязку JTableBeansBinding.
Кто-нибудь знает, как решить эту проблему (для извлечения DefaultTableModel)?
Ответ №1:
Согласно JavaDoc для BindingTableModel, класс не расширяет DefaultTableModel. Скорее, он реализует интерфейс табличной модели. Это означает, что вы не можете привести к DefaultTableModel, только к табличной модели:
TableModel dm=(TableModel) tblTet.getModel();
Ответ №2:
вы должны создать свою таблицу следующим образом :
String[] columnNames = {"Row",
"Category",
"From Date",
"From Time",
"To Date",
"To Time",
"Description",
"Doc"};
Object[][] data = {};//Table Rows
table.setModel(new DefaultTableModel(data,columnNames));
вместо:
table=new JTable(data,columnNames);
затем вы можете преобразовать свою табличную модель в модель по умолчанию.
Комментарии:
1. обычно, да. Но операция использует (лучше)привязку и не контролирует тип внутренне назначенной табличной модели