加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

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

您永远不应该将组件添加到滚动窗格.您只需添加第二行正确执行的组件.摆脱第一线.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读