gpt4 book ai didi

java - 单击复选框时,CheckboxTableViewer 不会更改表行的焦点

转载 作者:行者123 更新时间:2023-12-02 05:23:34 25 4
gpt4 key购买 nike

您好,我对 SWT 还比较陌生。我正在使用 CheckboxTableViewer。我有一个监听器:

diagnosesTableViewer.getTable().addSelectionListener(new SelectionListener() {

@Override
public void widgetSelected(SelectionEvent e) {
int nomenclatureSelectionIndex = diagnosesTableViewer
.getTable().getSelectionIndex();
Nomenclature checkedNomenclature = (Nomenclature) diagnosesTableViewer
.getElementAt(nomenclatureSelectionIndex);
diagnosesTableViewer.setChecked(checkedNomenclature,
!diagnosesTableViewer
.getChecked(checkedNomenclature));
}

当我单击表格行(除复选框之外的任何位置)时,一切都会按预期进行。但是,当我专门单击该复选框时,我也会取消选中先前选定行的复选框。我认为这是因为当我单击复选框时,它不会将焦点更改为新行,因此在旧的、先前选择的行 itlsef 和我选择其复选框的新行上调用监听器,其监听器永远不会被召唤。我该如何解决这个问题?

最佳答案

使用CheckboxTableViewer.addCheckStateListener添加一个ICheckStateListener来处理被单击的复选框。

viewer.addCheckStateListener(new ICheckStateListener() {
@Override
public void checkStateChanged(CheckStateChangedEvent event) {
// event.getChecked() is the check state
// event.getElement() is element being checked/unchecked
}
});

您可以选择事件中单击的行

viewer.setSelection(new StructuredSelection(event.getElement()));

使用

IStructuredSelection selection = (IStructuredSelection)viewer.getSelection();

获取现有选择。

关于java - 单击复选框时,CheckboxTableViewer 不会更改表行的焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26282574/

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