我正在做一個簡單的菜單來刪除樹上的項目。但是,刪除項目後,樹不會收到選擇事件,因此,偵聽器中的代碼不會執行(完整代碼中的偵聽器將更新部分UI)。刪除選擇後SWT選擇事件
我簡化了下面的代碼,省略了詳細信息。它是這樣的:
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 +單擊組合取消選擇所有itens,它會觸發。
我該怎麼辦?有沒有辦法在刪除itens後將SWT.Selection事件觸發到樹上,還是應該隔離監聽器中的代碼再次調用它?不應該tree.deselectAll()觸發選擇事件?
'if(selected.length> 0)'部分不能編譯,因爲你似乎沒有在任何地方聲明'selected'。你是從我們這裏隱藏的東西嗎? – 2015-02-11 16:45:42
是的,我試圖簡化代碼以避免混淆兩者之間的內容。對不起,這確實讓人困惑,我會編輯。我不應該嘗試簡化代碼來提問嗎? – 2015-02-11 16:50:02
我注意到我已經聲明瞭它,TreeItem [] selected = tree.getSelection(); – 2015-02-11 16:50:55