首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在单击CheckMenuItem时防止MenuButton关闭(JavaFX)

如何在单击CheckMenuItem时防止MenuButton关闭(JavaFX)
EN

Stack Overflow用户
提问于 2019-03-05 19:14:19
回答 1查看 840关注 0票数 0

我是Java的新手,我想知道当我点击项目时如何防止MenuButton弹出窗口关闭,我尝试了以下功能,我在这个网站上找到了它,但似乎没有任何作用。我需要它来克隆我的C#应用程序,目的是学习Java。

代码语言:javascript
运行
复制
@FXML
private MenuButton menuButton;

@FXML
    void initialize() {
        CheckMenuItem menuButtonItem1 = new CheckMenuItem("Item 1");
        CheckMenuItem menuButtonItem2 = new CheckMenuItem("Item 2");
        CheckMenuItem menuButtonItem3 = new CheckMenuItem("Item 3");
        menuButtonItem1.setOnAction(new EventHandler<ActionEvent>() {
        public void handle(ActionEvent e) {
           e.consume();
    }
});
        menuButtonItem2.setOnAction(new EventHandler<ActionEvent>() {
        public void handle(ActionEvent e) {
           e.consume();
    }
});
        menuButtonItem3.setOnAction(new EventHandler<ActionEvent>() {
        public void handle(ActionEvent e) {
           e.consume();
    }
});
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-05 21:16:19

CustomMenuItem类提供了一个setHideOnClick()方法来处理这个问题。为了使用它,您需要在这个CustomMenuItem中包装一个标准Node

代码语言:javascript
运行
复制
CheckBox checkBox = new CheckBox("Item 1");
CustomMenuItem customMenuItem = new CustomMenuItem(checkBox);
customMenuItem.setHideOnClick(false);

下面是一个完整的例子供你尝试:

代码语言:javascript
运行
复制
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.control.CustomMenuItem;
import javafx.scene.control.MenuButton;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class CheckMenuKeepOpen extends Application {

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

    @Override
    public void start(Stage primaryStage) {

        // Simple Interface
        VBox root = new VBox(10);
        root.setAlignment(Pos.CENTER);
        root.setPadding(new Insets(10));

        // Create the MenuButton
        MenuButton menuButton = new MenuButton("Click Me");

        for (int i = 0; i < 5; i++) {

            // In order to keep the menu open when selecting a CheckBox, we need to wrap it in a CustomMenuItem
            CustomMenuItem menuItem = new CustomMenuItem(new CheckBox("Item #" + i));

            // This method is pretty obvious; it keeps the menu open when selecting this item.
            menuItem.setHideOnClick(false);
            menuButton.getItems().add(menuItem);
        }

        root.getChildren().add(menuButton);

        // Show the stage
        primaryStage.setScene(new Scene(root));
        primaryStage.setTitle("Sample");
        primaryStage.show();
    }
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55001529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档