gpt4 book ai didi

java - 从 jtable 检索 boolean 值

转载 作者:行者123 更新时间:2023-12-02 08:23:39 24 4
gpt4 key购买 nike

在我的 Jtable 中,有一列 boolean 值显示为复选框。仅当值为 true 时我才能检索值单元格,当值为 false 时我无法读取值。我写我的代码:

int row = jTMezziInt.getRowCount();
int h=0;


while (h<=row){
chk= ((Boolean)jTMezziInt.getValueAt(h, 6)).booleanValue();
//if chk is true I can read;
// if chk is false the execution stopped at the chk assignement;
if (chk)
((DefaultTableModel )this.jTMezziInt.getModel()).removeRow(h);
row = jTMezziInt.getRowCount();
h=h+1;
}

TableColumn Selez = jTMezziInt.getColumnModel().getColumn(6);

}

为了定义表,我使用带有表编辑器的 netbeas。

感谢大家的帮助;

最佳答案

据我所知,这里有两个可能的问题之一。最可能的问题是您以 h = 0 开始,然后以 h = row 结束(因为 while 循环在 h <= row 时进行迭代)。

假设您的表中有 3 行。该循环现在将运行 h = 0、h = 1、h = 2 和 h = 3,即运行 4 次,但只有 3 行(索引为 0、1 和 2,没有索引为 3 的行)。这将在其最终迭代中导致空指针异常。这是您所看到的行为吗?

要解决这个问题,只需使 while 循环条件 h < row,而不是 h <= row。如果这不起作用,请告诉我,我们可以讨论其他可能的问题。

另一个问题是,即使您正在检查的行已被删除,您仍然会增加 h 。如果我们检查第 1 行,然后删除第 1 行,那么第 2 行将成为第 1 行,因此我们需要重新检查这个新的第 1 行。因此,如果您正在检查的当前行未被删除,则只应增加 h 。

最后,顺便说一句,请注意,如果您使用的是较新的 JDK 之一,则无需调用 booleanValue() (这称为不必要的拆箱)。这将自动为您完成。因此您可以更改以下内容:

chk= ((Boolean)jTMezziInt.getValueAt(h, 6)).booleanValue();

至:

chk= (Boolean)jTMezziInt.getValueAt(h, 6);

它只是更整洁、更好的风格。

关于java - 从 jtable 检索 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4987506/

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