0

我测试了在 JavaFX 中创建简单的对话框,但由于某种原因代码不起作用:

MenuBar menuBar = new MenuBar();

        // File menu - new, save, exit
        Menu menu = new Menu("File");
        menu.getItems().add(new MenuItem("New"));
        menu.getItems().add(new MenuItem("Save"));
        menu.getItems().add(new SeparatorMenuItem());

        menuBar.getMenus().add(menu);

        // Options menu - Preferences
        Menu options = new Menu("Options");
        options.getItems().add(new MenuItem("Preferences"));

        menuBar.getMenus().add(options);

        // Help menu - About
        Menu help = new Menu("Help");
        MenuItem about = new MenuItem("Exit");


        about.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent e) {
                Stage dialogStage = new Stage();
                dialogStage.initModality(Modality.WINDOW_MODAL);
                dialogStage.setScene(new Scene(VBoxBuilder.create().
                        children(new Text("Hi"), new Button("Ok.")).
                        alignment(Pos.CENTER).padding(new Insets(5)).build()));
                dialogStage.show();
            }
        });

        menuBar.getMenus().add(help);

        menuBar.prefWidthProperty().bind(primaryStage.widthProperty());

        root.getChildren().add(menuBar);
        primaryStage.setScene(scene);
        primaryStage.show();

我希望在单击About菜单项时显示带有作者信息的简单对话框窗口。你能告诉我如何纠正我的错误吗?

4

3 回答 3

2

你可以试试我的自定义对话框。访问FXDialog公共存储库。

于 2013-04-30T07:34:43.660 回答
2

我使用http://sourceforge.jp/projects/jfxmessagebox/wiki/JfxMessageBox作为我的消息框。我希望这有帮助。

于 2013-04-19T14:42:14.730 回答
1

几天来,我也在寻找 FX 对话功能。在我尝试编写自己的复杂对话框之前,我遇到了“救世主”ControlsFX [这里] ( http://fxexperience.com/ )。它对我来说就像一个奇迹。但是,您必须升级到 JDK8 才能充分体验 ControlFX 在 FX8 上的奇妙之处。相信大家迟早都会用到JDK8。

幸运的是,我的原始代码在变得太复杂之前没有走得太远,以至于我无法进行这种转换。:)

希望这篇文章也能满足 5000 名 JAVAer 的需求。看看它是如何与以下示例代码一起工作的:

    Action response = Dialogs.create()
        .owner( null)
        .title("Confirmation")
        .masthead("Are you sure to delete UserLevel: '"+ul.getLevelname()+"' ?")
        .message(entry)
        .showConfirm();

    System.out.println("response: " + response);        


    if (response.toString().equals("YES")){
        if(!Main.db.em.getTransaction().isActive())
            Main.db.em.getTransaction().begin();

        Main.db.em.remove(ul);
        Main.db.em.getTransaction().commit();
        tbvMain.getItems().remove(tbvMain.getSelectionModel().getSelectedIndex());
    }
于 2014-03-11T07:40:03.410 回答