JavaFx close window on pressing esc?

后端 未结 4 832
故里飘歌
故里飘歌 2021-01-12 18:59

Im calling a new stage in my program which I like to close on pressing escape. I did this which gives me a NullPointerException:

    scene.setOnKeyPressed(ne         


        
4条回答
  •  猫巷女王i
    2021-01-12 19:32

    why you dont show us more of your code? However, try this:

    public class Login extends Application {
    
        public static void main(String[] args) {
        launch(args);
    }
    
    @Override
    public void start(final Stage primaryStage) {
        primaryStage.setTitle("JavaFX Welcome");
        GridPane grid = new GridPane();
        grid.setAlignment(Pos.CENTER);
        grid.setHgap(10);
        grid.setVgap(10);
        grid.setPadding(new Insets(25, 25, 25, 25));
    
        Text scenetitle = new Text("Welcome");
        scenetitle.setId("welcome-text");
        grid.add(scenetitle, 0, 0, 2, 1);
    
        Label userName = new Label("User Name:");
        grid.add(userName, 0, 1);
    
        TextField userTextField = new TextField();
        grid.add(userTextField, 1, 1);
    
        Label pw = new Label("Password:");
        grid.add(pw, 0, 2);
    
        PasswordField pwBox = new PasswordField();
        grid.add(pwBox, 1, 2);
    
        Button btn = new Button("Sign in");
        HBox hbBtn = new HBox(10);
        hbBtn.setAlignment(Pos.BOTTOM_RIGHT);
        hbBtn.getChildren().add(btn);
        grid.add(hbBtn, 1, 4);
    
        Scene scene = new Scene(grid, 660, 300);
        scene.setOnKeyPressed(new EventHandler() {
            public void handle(KeyEvent ke) {
                if (ke.getCode() == KeyCode.ESCAPE) {
                    System.out.println("Key Pressed: " + ke.getCode());
                    primaryStage.close();
                }
            }
        });
        //primaryStage.setFullScreen(true);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
    }
    

    Done.

提交回复
热议问题