Java 如何在SWT.CHECK表中直观地禁用复选框?

Java 如何在SWT.CHECK表中直观地禁用复选框?,java,checkbox,swt,Java,Checkbox,Swt,如何在SWT.CHECK表中直观地禁用复选框? 我知道SWT不能单独禁用每个表列的复选框,但我设法捕获每个复选事件以立即取消选中复选框。此外,我将灰显该列的文本,指示其禁用状态。即使无法再选中该复选框,它仍会在视觉上保持启用状态。这是最后一点困扰我的解决办法 是否存在删除、禁用、隐藏或透支复选框的黑客行为?我设法在列中自定义绘制了一幅图像,但它显示在复选框下,所以我放弃了这种方法 myTable.addListener(SWT.Selection, new Listener() { publ

如何在SWT.CHECK表中直观地禁用复选框?

我知道SWT不能单独禁用每个表列的复选框,但我设法捕获每个复选事件以立即取消选中复选框。此外,我将灰显该列的文本,指示其禁用状态。即使无法再选中该复选框,它仍会在视觉上保持启用状态。这是最后一点困扰我的解决办法

是否存在删除、禁用、隐藏或透支复选框的黑客行为?我设法在列中自定义绘制了一幅图像,但它显示在复选框下,所以我放弃了这种方法

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