我有一个 SWT 表,我正在实例化SWT.CHECK
样式以便在每行旁边显示一个复选框。我的用户请求在表的标题行中添加另一个复选框,以便他们只需单击一下即可选择/取消选择所有行。
我看不到任何明显的方法来做到这一点,我只通过 Google 找到了 Swing/JTable 示例。有谁知道如何做到这一点?我希望无需重新实现表或退回到标题上下文菜单就可以实现。
只需创建两个复选框图像。第一个没有勾号,第二个有勾号。现在将第一个图像添加到表列标题中。之后,将侦听器添加到 tableColumn 中,以便当您第一次单击按钮时,table.selectALL()
方法应该与将 tableColumn 标题图像更改为第二个图像一起被触发。当您再次单击按钮时调用table.deSelectAll()
方法并将 tableColumn 标题替换为第一张图像。
您可以使用这个条件:
单击复选框(图像)时,使用 for 循环检查是否,
表中的任何复选框都会被选中。如果有人被发现
检查然后触发 table.deSelectAll() 方法,否则触发
table.selectAll() 方法。
在调整表/窗口大小时,“复选框”不会出现任何问题。
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();
}
}
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)