0
제목은 거의 모든 것을 말합니다. 프로그래밍 방식으로 expandItem() 함수를 실행할 때 nodeExpand() 호출로 인해 발생하는 이벤트를 원하지 않습니다. 나는 ExpandListener을 구현 한expandItem()을 호출 할 때 이벤트가 시작되지 않도록합니다.
는 :
@Override
public void nodeExpand(ExpandEvent event)
{
System.out.println("This should only appear when the user clicks the node on the UI");
}
내가 Tree 클래스의 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() 메서드를 프로그래밍 방식으로 호출 할 때마다 이벤트가 발생되어 수신기에서 포착하기 때문에 이것이 실제로 성능이 좋은지 궁금합니다. 하지만 이것이 내 솔루션이 더 빠르다는 것을 의미하지는 않습니다. ;) –
약 한 달을 기다린 후, 나는 당신이나 나의 접근 방식보다 더 나은 해결책이 없다고 생각합니다. 그래서 나는 당신이 최고의 대답을 얻는다 고 말하는 것이 공평하다고 생각합니다. –