关闭事件自定义菜单项

时间:2014-10-14 12:05:54

标签: javafx custom-controls menuitem

首先,我想为我糟糕的英语道歉。我的问题是,我在JavaFX中实现了一个扩展CustomMenuItem的新类。

我想获得一个可以处理类似CustomMenuItem的菜单,但是当点击它时,hide事件不应该存在。所以我想把菜单放在前面......

目前OnActionEvent(点击)启动我想要的事件,但完整的菜单隐藏。我没有真正确认JavaFX,所以我不知道如何从完整的菜单中捕获关闭/隐藏事件。

有解决方案吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您的问题很难理解,但我认为您正在寻找的是

setHideOnClick(false);

CustomMenuItem子类'构造函数中,如下例所示:

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.CustomMenuItem;
import javafx.scene.control.Label;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class NonHidingMenu extends Application {

    @Override
    public void start(Stage primaryStage) {
        Menu menu = new Menu("File");
        menu.getItems().addAll(new NonHidingMenuItem("New"));
        menu.getItems().addAll(new NonHidingMenuItem("Open"));

        MenuBar menuBar = new MenuBar();
        menuBar.getMenus().add(menu);

        BorderPane root = new BorderPane(null, menuBar, null, null, null);
        primaryStage.setScene(new Scene(root, 400, 400));
        primaryStage.show();
    }

    public static class NonHidingMenuItem extends CustomMenuItem {
        public NonHidingMenuItem(String text) {
            setContent(new Label(text));
            setHideOnClick(false);
            setOnAction(event -> System.out.println("Selected "+text));
        }
    }

    public static void main(String[] args) {
        launch(args);
    }
}