使用JTable的ClassCastException?

Adr*_*ian 0 java swing exception awt jtable

renbor = tabla_proveedor.getSelectedRow();
DefaultTableModel modelo = (DefaultTableModel) tabla_proveedor.getModel();
modelo.removeRow(renbor);
Run Code Online (Sandbox Code Playgroud)

那行代码给了我一个错误,它给了我......

线程"AWT-EventQueue-0"中的异常java.lang.ClassCastException:javax.swing.JTable $ 1无法强制转换为javax.swing.table.DefaultTableModel

我该如何解决这个问题?我需要从表中删除一行.

这是我实例化tabla_proveedor的地方

tabla_proveedor=new JTable(datos_proveedor,columna_proveedor)

    { 
        public boolean isCellEditable(int datos_proveedor, int columna_proveedor){

        return false;
        }
        public Component prepareRenderer(TableCellRenderer r, int datos_proveedor, int columna_proveedor)
        {
            Component c= super.prepareRenderer(r,datos_proveedor,columna_proveedor);

            return c;
        }
        };
Run Code Online (Sandbox Code Playgroud)

cam*_*ckr 8

javax.swing.JTable $ 1我该怎么办?

当您将数据和列名指定为数组时,JTable会为TableModel创建一个匿名内部类."1美元"告诉你这是事实.

创建JTable的一种更简单的方法是使用带有Vectors的构造函数.如果必须使用数组,则需要手动创建DefaultTableModel(如Sanjay所建议):

DefaultTableModel model = new DefaultTableModel(data, columnNames)
JTable table = new JTable( model );
Run Code Online (Sandbox Code Playgroud)

但我使用getColumnModel().getColumn(0).setPreferredWidth(200);

这与正在使用的TableModel无关,所以这个代码仍然可以使用DefaultTableModel.