2017-04-05 30 views
2

JavaFXには、バグのような奇妙な問題があります。アプリケーションを終了するために自分のアプリケーション JavaFXでのアプリケーションの起動と終了

  • プレスエスケープを開始するとき(フルスクリーンではない、アプリケーション全体)
  • はこれまでのところ、私は次のコードを持っている

    • fullscrenを入力:私は、次の手順を実行したいです:

      public class AppTest extends Application { 
      
          public static void main(String[] args) { 
           launch(args); 
          } 
      
          public void start(Stage stage) { 
          stage.setOnCloseRequest(t -> { 
           Platform.exit(); 
           System.exit(0); 
          }); 
      
          stage.setFullScreenExitHint("Press ESCAPE to exit"); 
          stage.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH); 
          stage.setFullScreen(true); 
      
          Rectangle2D screenBounds = Screen.getPrimary().getBounds(); 
          stage.setX(screenBounds.getMinX()); 
          stage.setY(screenBounds.getMinY()); 
      
          double screenWidth = screenBounds.getWidth(); 
          double screenHeight = screenBounds.getHeight(); 
      
          stage.setWidth(screenWidth); 
          stage.setHeight(screenHeight); 
      
          Group root = new Group(); 
          Scene scene = new Scene(root); 
          stage.setScene(scene); 
      
          scene.setOnKeyTyped(event -> { 
           if(event.getCode() == KeyCode.ESCAPE) { 
           stage.close(); 
           } 
          }); 
      
          Canvas canvas = new Canvas(screenWidth, screenHeight); 
          root.getChildren().add(canvas); 
      
          GraphicsContext gc = canvas.getGraphicsContext2D(); 
      
          gc.setFill(Color.BLUE); 
          gc.fillRect(0,0, screenWidth, screenHeight); 
      
          stage.show(); 
          } 
      
      } 
      

      私はMacOSです。

      一般にフルスクリーンになります。私は一般的に言っているのは、このコードの実際のバージョンが常にそうとは限らないからです。ときどき、最大化されたウィンドウです。

      次に、エスケープを押すと、アプリケーションを終了する代わりに最大化されたウィンドウが表示されます。

      どうすれば修正できますか?

    答えて

    2

    変更:

    scene.setOnKeyTyped 
    

    へ:

    scene.setOnKeyReleased 
    

    This理由を説明します。

    +0

    私はとても近かった:-)そして他の人には、私は 'NO_MATCH'が必要であることを確認します。それ以外の場合は、アプリケーションを終了しません。 – Henri

    関連する問題