JavaFX 对话框

Posted

技术标签:

【中文标题】JavaFX 对话框【英文标题】:JavaFX dialog Box 【发布时间】:2014-05-08 02:47:58 【问题描述】:
public void exitGame()  //pop up dialogue
    Platform.exit();

我尝试了很多我在互联网上看到的不同的东西,但我什么都做不了。我所需要的只是一个简单的对话框,当您点击菜单中的退出按钮并询问“您确定要退出吗?”时会弹出该对话框。并提供一个有效的“是的,我确定”。和“否,取消”按钮。

【问题讨论】:

How to create and show common dialog (Error, Warning, Confirmation) in JavaFX 2.0?的可能重复 【参考方案1】:

Lambda 也不错:

  yesBtn.setOnAction (e -> dialogStage.close ());
  noBtn.setOnAction (e -> dialogStage.close ());

APPLICATION_MODAL 也可能是您想要的:

  dialogStage.initModality (Modality.APPLICATION_MODAL);

【讨论】:

【参考方案2】:

这是 JavaFX 对话框的示例。 JavaFx 2.x 中没有对话框 api。因此,您已经创建了自己的舞台并在其中创建了组件。

import javafx.application.Application;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Modality;
import javafx.stage.Stage;

/**
 * @author JayaPrasad
 * 
 */
public class SampleDialog extends Application 

    /*
     * (non-Javadoc)
     * 
     * @see javafx.application.Application#start(javafx.stage.Stage)
     */
    @Override
    public void start(Stage primaryStage) throws Exception 
        primaryStage.setTitle("JavaFx Dialog");
        Button btn = new Button();
        btn.setText("Click me to display popup dialog");
        btn.setOnAction(new EventHandler<ActionEvent>() 

            @Override
            public void handle(ActionEvent event) 
                final Stage dialogStage = new Stage();
                dialogStage.initModality(Modality.WINDOW_MODAL);

                Label exitLabel = new Label("Are you sure you want to exit?");
                exitLabel.setAlignment(Pos.BASELINE_CENTER);

                Button yesBtn = new Button("Yes");
                yesBtn.setOnAction(new EventHandler<ActionEvent>() 

                    @Override
                    public void handle(ActionEvent arg0) 
                        dialogStage.close();

                    
                );
                Button noBtn = new Button("No");

                noBtn.setOnAction(new EventHandler<ActionEvent>() 

                    @Override
                    public void handle(ActionEvent arg0) 
                        dialogStage.close();

                    
                );

                HBox hBox = new HBox();
                hBox.setAlignment(Pos.BASELINE_CENTER);
                hBox.setSpacing(40.0);
                hBox.getChildren().addAll(yesBtn, noBtn);

                VBox vBox = new VBox();
                vBox.setSpacing(40.0);
                vBox.getChildren().addAll(exitLabel, hBox);

                dialogStage.setScene(new Scene(vBox));
                dialogStage.show();
            
        );

        StackPane root = new StackPane();
        root.getChildren().add(btn);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    

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


【讨论】:

以上是关于JavaFX 对话框的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaFX 2.0 中创建和显示通用对话框(错误、警告、确认)?

从对话框控制器[javaFX]中访问OK按钮

JavaFX 8 图形线程管道

新项目对话框中缺少 JavaFX FXML 应用程序。

JavaFX 8图形线程管道

JavaFX如何实现模态窗口