gpt4 book ai didi

Java Boolean.class 如何获取每个复选框

转载 作者:行者123 更新时间:2023-12-01 21:55:05 30 4
gpt4 key购买 nike

我创建了一个 jtable,在最后一列中,我将其转换为 Boolean.class,将整个列转换为复选框,现在我想要做的是单独获取每个复选框,以便我可以创建一个 if 语句来删除行,但当我尝试时,我只获得第一行,或者当我尝试获取辅助复选框时,我删除两行,而不是在该行上单击我尝试过 model.getRowCount 和 table.getRowCount ,但它不起作用。

    table.setModel(new DefaultTableModel(data, col)
{
public Class<?> getColumnClass(int column)
{
switch(column)
{
case 0:
return String.class;
case 1:
return String.class;
case 2:
return String.class;
case 3:
return String.class;
case 4:
return String.class;

case 5:
return String.class;
case 6:
return String.class;
case 7:
return String.class;
case 8:
return String.class;
case 9:
return String.class;
case 10:
return Boolean.class;

default:
return String.class;
}

}

});

下面的语句是唯一有效的。有没有办法单独获取复选框?

                if(Boolean.TRUE)
{

Submit(0);

((DefaultTableModel)table.getModel()).removeRow(0);

}

最佳答案

按照https://stackoverflow.com/a/22711419/9569292向您的模型添加一个TableModelListener

当调用监听器时,该事件将告诉您哪些单元格已更改。检查该值是否为 boolean 类型(或者列索引​​是否为 10),然后对事件发起的行执行操作。

编辑:

让我告诉你评论中的代码有什么问题:

void Checkbox1() {
table.getSelectedRow() //useless invocation without an assignment
if(table.isRowSelected(0)) {
if(Boolean.class != null) { //this is ALWAYS true
if(Boolean.valueOf(true)) { //this is ALWAYS true
table.setRowSelectionAllowed(true);
table.getSelectedRow(); //useless invocation without an assignment
Submit(0); //don't know what this does
((DefaultTableModel)table.getModel()).removeRow(0);
errorText.setVisible(false);
} else {
if(Boolean.valueOf(false)) { //this is ALWAYS false and will never happen
errorText.setVisible(true);
}
}
}
}
}

我不知道你是如何测试它“工作”的,但它需要一些......嗯......工作。

当我提到TableModelListener时,我想到的可能更像是这样的:

TableModelListener l = new TableModelListener() {
@Override
public void tableChanged(TableModelEvent e) {
if(e.getType()==TableModelEvent.UPDATE && e.getColumn()==10) {
//only consider updates to Boolean value in col index 10
//note the reversed order since we are potentially deleting rows
for(int row=e.getLastRow();row>=e.getFirstRow(); row--) {
if((boolean)model.getValueAt(row, 10)) { //this should be the Boolean value in the affected row
model.removeRow(row);
}
}
}

}
};

关于Java Boolean.class 如何获取每个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58746507/

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