Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javafx 关闭事件Cusom菜单项_Javafx_Custom Controls_Menuitem - Fatal编程技术网

Javafx 关闭事件Cusom菜单项

Javafx 关闭事件Cusom菜单项,javafx,custom-controls,menuitem,Javafx,Custom Controls,Menuitem,首先我想为我的英语不好道歉。我的问题是,我在JavaFX中实现了一个扩展CustomMenuItem的新类 我想得到一个菜单,可以处理任何类似CustomMenuItem的东西,但是当点击它时,隐藏事件不应该出现。所以我想把菜单放在最前面 此时OnActionEvent(单击)启动我想要的事件,但完整菜单隐藏。我对JavaFX没有真正的确认,所以我不知道如何从完整菜单中捕获close/hide事件 有解决办法吗 谢谢你的帮助。你的问题很难理解,但我想你要找的是电话 setHideOnClick(

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

我想得到一个菜单,可以处理任何类似CustomMenuItem的东西,但是当点击它时,隐藏事件不应该出现。所以我想把菜单放在最前面

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

有解决办法吗


谢谢你的帮助。

你的问题很难理解,但我想你要找的是电话

setHideOnClick(false);
CustomMenuItem
subclass'构造函数中,如下例所示:

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);
    }
}

你好,詹姆斯,这不是我的问题。如果我在菜单项上单击,事件操作将启动,完整菜单将隐藏!我在点击菜单后看不到它,但我想得到一个这样的解决方案:首先我想点击菜单项,然后启动事件,菜单将不会隐藏并停留在前一轮。你能帮帮我吗?那个方法调用就是这么做的。我用一个你可以运行的例子更新了答案。这个解决方案没有这个效果。如果我单击菜单项,它们将隐藏。您是否可以修复它?当我单击它们时,消息会打印到控制台,但菜单仍显示。您使用的是哪个JDK版本?您好,我使用JavaSE 1.7->代码中的Lambda函数也不起作用。