2016-12-17 2 views
1

창이나 이미지 뷰에서 마우스 오른쪽 버튼을 클릭 할 때 만든 컨텍스트 메뉴를 표시하려고합니다 ((상황에 맞는 메뉴에서 요청 됨)). 문제는 레이블과 버튼과 달리 setContextMenue 메소드가없는 것입니다. 컨텍스트 메뉴를 컨텍스트 메뉴를 수락하지 않는 노드에 어떻게 연관시킬 수 있습니까?javaFX에서 창이나 이미지 뷰를 마우스 오른쪽 버튼으로 클릭 할 때 컨텍스트 메뉴를 표시하는 방법

@FXML 
Button button1, button2; 

@FXML 
Pane mainPane; 

@FXML 
ImageView image; 
private void initContextMenu() { 
    final ContextMenu contextMenu = new ContextMenu(); 
    final MenuItem item1 = new MenuItem("open a file"); 
    final MenuItem item2 = new MenuItem("quit"); 

    contextMenu.getItems().addAll(item1, item2); 

    // not possible 
    image.setContextMenu(contextMenu); 
    // possible 
    button1.setContextMenu(contextMenu) 

답변

5

당신은 내가 노력

image.setOnContextMenuRequested(e -> 
    contextMenu.show(image, e.getScreenX(), e.getScreenY())); 
+0

할 수 -.> contextMenu.show (imgWidnow.getScene()하여 GetWindow()와 제대로 기능,하지만 지금은 메뉴의 위치가 중앙에 고정 .. 내가 실제로 이런 식으로 해결 창 –

+1

은 감사하지만 imgWidnow.setOnContextMenuRequested (이벤트 -> { contextMenu.setY (event.getScreenY()); contextMenu.setX (event.getScreenX()); contextMenu.show (imgWidnow.getScene(). getWindow()); }); –

+0

@RafatRefai 이전에는 그 행동을 보지 못했습니다. 'show (Node, double, double) '메서드는 항상 저에게 효과적입니다. 어떤 OS/JDK 버전을 사용하고 있습니까? (포커스를 잃어 버렸을 때를 닫으려면'contextMenu.setAutoHide (true);'를 사용하십시오.) –

관련 문제