单击行时设置CheckboxTableViewer的复选框

时间:2014-10-08 22:03:52

标签: java checkbox swt actionlistener jface

我对SWT很新。实际上今天开始研究它。我有一个类型为CheckboxTableViewer的表。我想要做的是每当用户选择行时(即在行上的任何地方点击)我想要选中(勾选)复选框。目前我在CheckboxTableViewer上有一个监听器,如下所示:

diagnosesTableViewer.addCheckStateListener(new ICheckStateListener() {

        @Override
        public void checkStateChanged(CheckStateChangedEvent event) {

            Nomenclature changedStateNomenclature = (Nomenclature) event
                    .getElement();
            if (event.getChecked()) {
                selectedNomenclatures.add(changedStateNomenclature);
            } else {
                selectedNomenclatures.remove(changedStateNomenclature);
            }
        }

    });

我可以通过选中复选框来选择行。但我想选中复选框,即使用户通过单击任何列上该行上的任何位置(而不仅仅是复选框)来选择行。

我猜这个逻辑会出现在addSelectionChangedListener的某个地方,用于addSelectionChangedListener。但我不知道该怎么做。任何人都可以帮我这个吗?

1 个答案:

答案 0 :(得分:2)

使用此代码:向表中添加选择侦听器。 ctvCheckboxTableViewer的实例。

另外我假设CheckboxTableViewer只允许单个选择而不是多个。

ctv.getTable().addSelectionListener(new SelectionAdapter() {

  @Override
  public void widgetSelected(SelectionEvent e) {
      int df = ctv.getTable().getSelectionIndex();
      ctv.setChecked(ctv.getElementAt(df), !ctv.getChecked(ctv.getElementAt(df)));
  }         
});