2016-12-17 8 views
1

Я пытаюсь показать контекстное меню, которое я создал, когда я нажимаю правой кнопкой мыши на панели или в виде изображения ((в запрошенном запрошенном контекстном меню)). Проблема в том, что у них нет метода setContextMenue, в отличие от меток и кнопок ... и т. Д. Как связать контекстное меню с узлом, который, кажется, не принимает контекстные меню?Как показать контекстное меню при щелчке правой кнопкой мыши на панели или в ImageView в 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)' всегда работал для меня. Какую версию ОС/JDK вы используете? (Чтобы закрыть его, потеряйте фокус, попробуйте 'contextMenu.setAutoHide (true);'.) –