Java 如何在SWT.CHECK表中直观地禁用复选框?
如何在SWT.CHECK表中直观地禁用复选框? 我知道SWT不能单独禁用每个表列的复选框,但我设法捕获每个复选事件以立即取消选中复选框。此外,我将灰显该列的文本,指示其禁用状态。即使无法再选中该复选框,它仍会在视觉上保持启用状态。这是最后一点困扰我的解决办法 是否存在删除、禁用、隐藏或透支复选框的黑客行为?我设法在列中自定义绘制了一幅图像,但它显示在复选框下,所以我放弃了这种方法Java 如何在SWT.CHECK表中直观地禁用复选框?,java,checkbox,swt,Java,Checkbox,Swt,如何在SWT.CHECK表中直观地禁用复选框? 我知道SWT不能单独禁用每个表列的复选框,但我设法捕获每个复选事件以立即取消选中复选框。此外,我将灰显该列的文本,指示其禁用状态。即使无法再选中该复选框,它仍会在视觉上保持启用状态。这是最后一点困扰我的解决办法 是否存在删除、禁用、隐藏或透支复选框的黑客行为?我设法在列中自定义绘制了一幅图像,但它显示在复选框下,所以我放弃了这种方法 myTable.addListener(SWT.Selection, new Listener() { publ
myTable.addListener(SWT.Selection, new Listener() {
public void handleEvent(Event event) {
logger.debug("Selection event fired.");
if (event.detail == SWT.CHECK) {
logger.debug("Item was checked.");
if (null != event.item && null != event.item.getData()) {
MyDataModel myModel = (MyDataModel)event.item.getData();
logger.debug("Got MyDataModel object.");
if (myModel.isDone()) {
acknowledgmentsTable.table.setRedraw(false);
((TableItem)event.item).setChecked(false);
logger.debug("Unchecked item.");
// TODO: How to visually disable checkbox?
acknowledgmentsTable.table.setRedraw(true);
}
}
}
}
});
我认为用复选框表无法实现这一点。您可以使用普通表和列图像自己绘制选中/未选中/禁用的图像。是否可以将单击侦听器添加到图像中?一种方法是使用带有
CheckboxCellEditor