org.jdesktop.переплет.JTableBinding$BindingTableModel не может быть передан в javax.swing.table.Модель по умолчанию

#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. обычно, да. Но операция использует (лучше)привязку и не контролирует тип внутренне назначенной табличной модели