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

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

【问题讨论】:

标签: java dialog


【解决方案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);
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 2014-05-03
      • 1970-01-01
      • 2015-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-20
      • 2012-12-19
      • 2016-12-06
      相关资源
      最近更新 更多