2

javafx.scene.control.MenuMenuBar に空を追加し、クリックされたときにメソッドを呼び出したいと思っています。

仕方なく使ってみmenu.setOnShowing(new EventHandler<Event>(){});ました。

これが私が現在取り組んでいるものです:

public MenuBar createMenuBar() {
    MenuBar menuBar = new MenuBar();
    Menu file = new Menu("File");

    Menu addAccountTab = new Menu("Add Tab");
    addAccountTab.setOnShowing(new EventHandler<Event>() {
        public void handle(Event e) {
            System.out.println("addAccountTab Menu clicked.");
        }
    });
    menuBar.getMenus().add(addAccount);
    return menuBar;
}

ただし、メニューをクリックしても onShowing イベントは呼び出されません。

4

2 に答える 2

1

API は別の方法を提案しますがonShowing、Menu に MenuItems がない場合、またはそれらがすべて非表示の場合、イベントは呼び出されません。

このようにイベント内でメニューのhide()メソッドを使用することで問題を解決できました。onShown

public MenuBar createMenuBar() {
    MenuBar menuBar = new MenuBar();
    Menu addAccount = MenuBuilder.create()
        .onShown(new EventHandler<Event>() {
            public void handle(Event e) {
                ((Menu)e.getSource()).hide();
                System.out.println("addAccount Clicked");
            }
        }).items(new MenuItem())
        .text("Add Account").build();
    menuBar.getMenus().addAll(addAccount);

    return menuBar;
}
于 2012-11-19T03:16:28.460 に答える