无法将org.jdesktop.swingbinding.JTableBinding$BindingTableModel转换为javax.swing.table.DefaultTableModel

无法将org.jdesktop.swingbinding.JTableBinding$BindingTableModel转换为javax.swing.table.DefaultTableModel,java,swing,jtable,jsr296,beans-binding,Java,Swing,Jtable,Jsr296,Beans Binding,我试图对JTable头进行分组,为此我想得到当前JTable的DefaultTableModel。但当我尝试检索表模型时,如下所示: DefaultTableModel dm=(DefaultTableModel) tblTet.getModel(); 它显示以下异常: org.jdesktop.swingbinding.JTableBinding$BindingTableModel不能为空 转换为javax.swing.table.DefaultTableModel 因为我使用的是JTabl

我试图对JTable头进行分组,为此我想得到当前JTable的DefaultTableModel。但当我尝试检索表模型时,如下所示:

DefaultTableModel dm=(DefaultTableModel) tblTet.getModel();
它显示以下异常:

org.jdesktop.swingbinding.JTableBinding$BindingTableModel不能为空 转换为javax.swing.table.DefaultTableModel

因为我使用的是JTableBeansBinding

是否有人知道如何解决此问题(用于检索DefaultTableModel)?

根据,该类不扩展DefaultTableModel。相反,它实现了TableModel接口。这意味着您不能强制转换为DefaultTableModel,只能转换为TableModel:

TableModel dm=(TableModel) tblTet.getModel();

您必须按如下方式创建表:

    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);

然后您可以将表格模型强制转换为defaultTableModel。

正常情况下,是的。但是OP使用(更好的)BeansBinding,并且无法控制内部分配的TableModel的类型