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

1

また、数日間、FX ダイアログ機能を探していました。独自の複雑なダイアログを作成しようとする前に、「救世主」ControlsFX [こちら] ( http://fxexperience.com/ ) に出会いました。それは私にとって奇跡のように機能します。ただし、FX8 での ControlFX の素晴らしさを十分に体験するには、JDK8 にアップグレードする必要があります。遅かれ早かれ、誰もが JDK8 を使用するようになると思います。

元のコードが複雑になりすぎて、そのような移行を行うことができなかったのは幸運でした。:)

この投稿が 5,000 人の 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 に答える