java – DefaultTableModel不返回dataVector中的值
发布时间:2020-12-15 04:20:41 所属栏目:Java 来源:网络整理
导读:我的问题与JTable和DefaultTableModel有关. 我的任务是创建JTable,显示带有复选框的数据……我成功完成了.. 但是我想从复选框中选择的JTable中删除行…我知道这已被问过太多次了…我需要使用removeRow(int row)方法来删除…但是当我执行语句时 DefaultTableM
我的问题与JTable和DefaultTableModel有关.
我的任务是创建JTable,显示带有复选框的数据……我成功完成了.. 但是我想从复选框中选择的JTable中删除行…我知道这已被问过太多次了…我需要使用removeRow(int row)方法来删除…但是当我执行语句时 DefaultTableModel model=(DefaultTableModel)jTable1.getModel(); int totalrows=model.getRowCount(); for (int i = totalrows - 1 ; i >= 0; i--) { Boolean checked = (Boolean) jTable1.getModel().getValueAt(i,8); if (checked) { ((DefaultTableModel)jTable1.getModel()).removeRow(i); } } 它总是从getRowCount()方法返回0,所以它不会进入循环内部.. 我的TableModel类如下 public class tabmod extends DefaultTableModel { public tabmod(Object rowData[][],Object columnNames[]) { super(rowData,columnNames); } @Override public Class getColumnClass(int col) { if (col == 8) return Boolean.class; return super.getColumnClass(col); //other columns accept String values } @Override public boolean isCellEditable(int row,int col) { return col == 8; } } 而我正在从我的JFrame中调用它 tabmod tab=new tabmod(t,header); final JTable table = new JTable(tab); table.setFillsViewportHeight(true); jScrollPane1.add(table); jScrollPane1.setViewportView(table); 我没有得到这里的问题….. 解决方法
如果您说行计数为零,但表中有可见GUI上显示的行,则表示您的代码未引用可见表,这意味着您可能为表创建了一个实例变量和一个局部变量.
final JTable table = new JTable(tab); 以上这条线可能是错误的.你不应该使用最终变量.相反,您应该使用实例变量.所以代码应该是: table = new JTable(tab); 现在你的deleteRows()方法可以引用实例变量. //jScrollPane1.add(table); jScrollPane1.setViewportView(table); 您永远不应该将组件添加到滚动窗格.您只需添加第二行正确执行的组件.摆脱第一线. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |