2014-03-28 2 views
4
public void exitGame() { //pop up dialogue 
    Platform.exit(); 
} 

나는 인터넷에서 보았던 많은 다른 것들을 시도했지만 아무 것도 할 수 없습니다. 필요한 것은 메뉴의 나가기 버튼을 눌렀을 때 나타나는 팝업 대화 상자입니다. "정말 끝내시겠습니까?"라고 묻습니다. "예, 확신합니다"라고 제안합니다. 및 "아니, 취소"버튼을 클릭하십시오.JavaFX 대화 상자

+0

가능한 중복) JavaFX 2.0에서?] (http://stackoverflow.com/questions/8309981/how-to-create-and-show-common-dialog-error-warning-confirmation-in-javafx-2) – jewelsea

답변

6

다음은 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); 
    } 

} 
2

주면서 좋은도 있습니다

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

는 또한 APPLICATION_MODAL 당신이 원하는 것을 아마도 :

dialogStage.initModality (Modality.APPLICATION_MODAL); 
[일반 대화 상자를 생성하고 표시하는 방법 (오류, 경고, 확인의
관련 문제