gpt4 book ai didi

java - 如何在 SWT 表头中放置一个 "(de)select all"复选框?

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:19:02 28 4
gpt4 key购买 nike

我有一个 SWT 表,我正在用 SWT.CHECK 样式实例化它,以便在每一行旁边显示一个复选框。我的用户要求在表的标题行中添加另一个复选框,以便他们可以通过单击选择/取消选择所有行。

我看不到任何明显的方法,而且我只是通过 Google 找到了 Swing/JTable 示例。有谁知道如何做到这一点?我希望无需重新实现 Table 或退回到标题上下文菜单即可实现。

最佳答案

只需创建两个复选框图像。第一个没有勾号,第二个有勾号。现在将第一个图像添加到 tableColumn 标题。之后将监听器添加到 tableColumn,这样当您第一次单击按钮时,应该触发 table.selectALL() 方法,同时将 tableColumn 标题图像更改为第二个。当您再次单击按钮时,调用 table.deSelectAll() 方法并将 tableColumn 标题替换为第一张图像。

你可以使用这个条件:

When the checkbox(image) is clicked, use a for loop to check whether, any of the checkboxes in the table is checked. if anyone is found checked then fire table.deSelectAll() method , else fire table.selectAll() method.

table/widow resizing时“checkbox”不会有任何问题。

tableColumn0.addListener(SWT.Selection, new Listener() {
@Override
public void handleEvent(Event event) {
// TODO Auto-generated method stub
boolean checkBoxFlag = false;
for (int i = 0; i < table.getItemCount(); i++) {
if (table.getItems()[i].getChecked()) {
checkBoxFlag = true;
}
}

if (checkBoxFlag) {
for (int m = 0; m < table.getItemCount(); m++) {
table.getItems()[m].setChecked(false);
tableColumn0.setImage(new Image(Display.getCurrent(),
"images/chkBox.PNG"));

table.deselectAll();

}
} else {
for (int m = 0; m < table.getItemCount(); m++) {
table.getItems()[m].setChecked(true);
tableColumn0.setImage(new Image(Display.getCurrent(),
"images/chkBox2.PNG"));

table.selectAll();
}
}

}
});

关于java - 如何在 SWT 表头中放置一个 "(de)select all"复选框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3520958/

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