删除选择后的 SWT 选择事件
SWT selection event after deleting selection
我正在制作一个简单的菜单来删除树上的项目。但是删除item后,树并没有收到选择事件,因此监听器中的代码没有执行(监听器,在完整代码中,更新了UI的一部分)。
我简化了下面的代码,省略了细节。它是这样的:
tree.addListener (SWT.Selection, new Listener(){
public void handleEvent(Event e) {
(....)
}
}
我也试过这个:
tree.addSelectionListener (new SelectionListener(){
public void widgetDefaultSelected(SelectionEvent e){
(...)
}
public void widgetSelected(SelectionEvent e) {
(...)
}
}
在我的菜单操作(删除选择)中,有这个:
TreeItem [] selected = tree.getSelection();
tree.deselectAll();
if (selected.length > 0)
{
for( TreeItem i : selected){
i.dispose();
}
}
删除选择后,我的选择侦听器没有触发。如果我使用 ctrl+click 组合取消选择所有项目,它会触发。
我该怎么办?有没有办法在删除 itens 后将 SWT.Selection 事件触发到树,或者我应该隔离侦听器中的代码以再次调用它? tree.deselectAll() 不应该触发选择事件吗?
您可以通过以下方式以编程方式发送选择事件:
Event event = new Event();
event.widget = tree;
event.display = tree.getDisplay();
event.type = SWT.Selection;
tree.notifyListeners(SWT.Selection, event);
有相同情况发现
this link 提到,由于设计原因,以编程方式 setSelection 可能永远不会发送此事件,因此请始终在设置后以编程方式发送它(如果需要)
我正在制作一个简单的菜单来删除树上的项目。但是删除item后,树并没有收到选择事件,因此监听器中的代码没有执行(监听器,在完整代码中,更新了UI的一部分)。
我简化了下面的代码,省略了细节。它是这样的:
tree.addListener (SWT.Selection, new Listener(){
public void handleEvent(Event e) {
(....)
}
}
我也试过这个:
tree.addSelectionListener (new SelectionListener(){
public void widgetDefaultSelected(SelectionEvent e){
(...)
}
public void widgetSelected(SelectionEvent e) {
(...)
}
}
在我的菜单操作(删除选择)中,有这个:
TreeItem [] selected = tree.getSelection();
tree.deselectAll();
if (selected.length > 0)
{
for( TreeItem i : selected){
i.dispose();
}
}
删除选择后,我的选择侦听器没有触发。如果我使用 ctrl+click 组合取消选择所有项目,它会触发。
我该怎么办?有没有办法在删除 itens 后将 SWT.Selection 事件触发到树,或者我应该隔离侦听器中的代码以再次调用它? tree.deselectAll() 不应该触发选择事件吗?
您可以通过以下方式以编程方式发送选择事件:
Event event = new Event();
event.widget = tree;
event.display = tree.getDisplay();
event.type = SWT.Selection;
tree.notifyListeners(SWT.Selection, event);
有相同情况发现 this link 提到,由于设计原因,以编程方式 setSelection 可能永远不会发送此事件,因此请始终在设置后以编程方式发送它(如果需要)