使用JTable的ClassCastException?

时间:2013-05-17 02:14:39

标签: java swing exception jtable awt

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

2 个答案:

答案 0 :(得分:8)

  

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。

答案 1 :(得分:3)

创建表时,应手动设置表模型:

table.setModel(new DefaultTableModel());

在将表格添加到表单后,这通常可以在构造函数或GUI-init方法中进行。

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