gpt4 book ai didi

java - DefaultTableModel 不返回 dataVector 中的值

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:26:21 25 4
gpt4 key购买 nike

我的问题与 JTableDefaultTableModel 有关。我的任务是创建 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);

永远不要将组件添加到滚动 Pane 。您只添加第二行正确执行的组件。去掉第一行。

关于java - DefaultTableModel 不返回 dataVector 中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24184670/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com