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;
}
};
答案 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方法中进行。
这样你就知道了这门课是什么。 如果需要,您可以自定义它。