2016-12-08 7 views
0

Я пробую свой путь через JavaFX и все еще имею много - возможно, глупых - начинающих вопросов.JavaFx добавить контекстное меню от контроллера

Моя проблема дня заключается в следующем:

Я создаю в строитель сцены и контроллер, FlowPane, к которому я хочу, чтобы добавить правой кнопкой мыши вариант, который открывает контекстное меню.

Через строитель сцены я добавил функцию OnContextMenuRequested и определил ее в контроллере.

Чтобы проверить, я добавил функцию печати и диалоговое окно к функции, которая работает хорошо.

Тем не менее, контекстное меню не работает ..

Любой может помочь и сказать мне, что мне не хватает ???

Заранее спасибо ...

public void contextMenu(ContextMenuEvent contextMenuEvent) { 


    // working fine .. 

    Alert alert = new Alert(Alert.AlertType.INFORMATION); 
    alert.setTitle("Information"); 
    alert.setHeaderText("Look"); 
    alert.setContentText("Message"); 
    alert.showAndWait(); 



    // working fine 

    System.out.println("Hello"); 


    // Context Menu ......... not working 

    ContextMenu contextMenu = new ContextMenu(); 
    MenuItem quit = new MenuItem("quit"); 
    MenuItem hello = new MenuItem("hello"); 
    contextMenu.getItems().addAll(quit, hello); 
    contextMenu.setX(10.0); 
    contextMenu.setY(10.0); 
    contextMenu.show(); 

    ????.setContextMenu(????) 

    } 
+0

Что такое ' contextMenu.show() '? Для [ContextMenu] нет такого безпараметрического метода public show() (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ContextMenu.html). Попробуйте использовать один из [параметризованных методов для отображения меню] (https://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/ContextMenu.html#show-javafx.scene.Node- javafx.geometry.Side-двойной двойной). Если у вас по-прежнему возникают проблемы, укажите [mcve] (http://stackoverflow.com/help/mcve), который является полным, компилирует, запускает, реплицирует проблему и минимален. – jewelsea

+0

true ... подумал, что стоит попробовать, но это не сработало ... знаете ли вы о каком-либо другом методе? – rainer

+0

Прочитайте документацию, связанную с ней, она содержит пример кода для отображения ContextMenu. – jewelsea

ответ

3

Если у вас есть контроль, вы должны показать ContextMenu «вручную» с помощью одного из методов, определенных в ContextMenu:

// contextMenu.setX(10.0); 
// contextMenu.setY(10.0); 

contextMenu.show((Node) contextMenuEvent.getSource(), contextMenuEvent.getScreenX(), contextMenuEvent.getScreenY()); 
+0

работает как очарование .. большое спасибо – rainer