javafx UI를 작성 중이며 클릭 한 MenuItem에 대한 eventHandler에서 contextMenu의 소유자 Node를 가져 오려고합니다.Javafx 2.0 - EventHandler에서 ContextMenu 부모 노드 가져 오기
내 코드 :
TabPane tabPane = new TabPane();
Tab tab1 = new Tab();
Tab tab2 = new Tab();
tabPane.getTabs().addAll(tab1,tab2);
ContextMenu contextMenu = new ContextMenu();
MenuItem menuItem = new MenuItem("Do Some Action");
menuItem.setOnAction(new EventHandler<ActionEvent>(){
@override
public void handle(ActionEvent e){
// Get the tab which was clicked on and do stuffs with it
}
});
contextMenu.getItems().add(menuItem);
for(Tab tab: tabPane.getTabs()){
tab.setContextMenu(contextMenu);
}
내가 뭘하고 싶은 것은이 contextMenu를가 선택되어 있었다 탭에 대한 참조를 얻을 수있다. 거기에서
ContextMenu menu = ((ContextMenu)((MenuItem)e.getSource()).getParentPopup());
내 생각 :
나는 다음과 같은 MenuItem과 이벤트 핸들러에 대한 내부 핸들 (의 ActionEvent 전자)의 코드 방식으로의 MenuItem의의 ContextMenu를 것으로 보인다 무엇에 대한 참조를 얻을 수 있었다 메뉴에서 ContextMenu의 .getOwnerNode() 메소드를 사용하고 나서 탭에 대한 참조를 가졌지 만, 실행할 때 내가 이해할 수없는 항목에 대한 참조를 얻습니다..getOwnerNode()에 의해 반환 된 개체의 toString() 메서드는 "TabPaneSkin $ TabHeaderSkin $ 3 @ 14f59cef"를 반환하며 그 의미를 알 수 없습니다.
노드에 올바르게 도달하거나 완전히 다른 접근 방식이 더 잘 작동 할 때까지 체인을 따라 올라가는 방식으로 접근하고 있습니까?
ContextMenu의 기능이 있어야하는데 MenuItem을 클릭하면 ContextMenu가 선택된 탭에 대한 참조가 있어야만 멋지게 처리 할 수 있습니다.
빠른 응답과 멋진 솔루션에 감사드립니다. – mcdonasm