0
標題說幾乎所有東西。當我以編程方式執行expandItem()函數時,我不希望觸發事件導致nodeExpand()調用。當調用expandItem()時,防止事件被解僱()
我已經實現了ExpandListener:
@Override
public void nodeExpand(ExpandEvent event)
{
System.out.println("This should only appear when the user clicks the node on the UI");
}
當我調用樹類的expandItem()函數,總有觸發的事件。這是原來的樹類的代碼:
public boolean expandItem(Object itemId) {
boolean success = expandItem(itemId, true);
requestRepaint();
return success;
}
private boolean expandItem(Object itemId, boolean sendChildTree) {
// Succeeds if the node is already expanded
if (isExpanded(itemId)) {
return true;
}
// Nodes that can not have children are not expandable
if (!areChildrenAllowed(itemId)) {
return false;
}
// Expands
expanded.add(itemId);
expandedItemId = itemId;
if (initialPaint) {
requestRepaint();
} else if (sendChildTree) {
requestPartialRepaint();
}
fireExpandEvent(itemId);
return true;
}
我現在所做的得到這個工作是:
m_Tree.removeListener((ExpandListener)this);
m_Tree.expandItem(sItemId);
m_Tree.addListener((ExpandListener)this);
有什麼更好的辦法?
我曾經有過這樣的事情。我想知道這是否真的是高性能的,因爲每次以編程方式調用expandItem()方法時,偵聽器都會觸發並捕獲事件。但這並不意味着我的解決方案更快。 ;) –
等了大概一個月之後,我想沒有比你的或我的方法更好的解決方案。所以我認爲說你可以得到最好的答案是公平的。 –