0
renbor = tabla_proveedor.getSelectedRow();
DefaultTableModel modelo = (DefaultTableModel) tabla_proveedor.getModel();
modelo.removeRow(renbor);

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

线程“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;
        }
        };
4

2 回答 2

9

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

当您将数据和列名指定为数组时,JTable 会为 TableModel 创建一个匿名内部类。“$1”告诉你情况就是这样。

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

DefaultTableModel model = new DefaultTableModel(data, columnNames)
JTable table = new JTable( model );

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

这与正在使用的 TableModel 无关,所以是的,这段代码仍然适用于 DefaultTableModel。

于 2013-05-17T03:40:27.977 回答
3

您应该在创建表时手动设置表模型:

table.setModel(new DefaultTableModel());

在您将表添加到表单后,这通常会进入构造函数或 GUI-init 方法。

这样你就知道类是什么了。如果需要,您可以自定义它。

于 2013-05-17T02:19:45.647 回答