3

ロードする最初のステージは、常にフルスクリーンとして正しく開きます。

stage.setFullScreen(true);
stage.setScene(login_scene); 

しかし、別のFXMLに変更すると、アプリケーションはフルスクリーンのままになります(上部のツールバーはありません。。)。ただし、実際のビューコンテンツは、FXMLのルートAnchorPaneのprefWidth / prefHeightでサイズ変更されます(デスクトップは右下隅に表示されます:| )、画面の解像度に合わせて動的にしたいと思います。

ありがとう。

@後で編集:

したがって、メインクラスのstartメソッドで、シーン(FXMLドキュメントから作成)をロードし、Stage(startメソッドパラメーター)に設定します。このステージは後で使用するために保存します。

以前に保存したのと同じステージのボタンを押すと、シーンを別のFXMLドキュメントに変更します

@スクリーンショット:

http://tinypic.com/r/2079nqb/6-1番目のシーンは正常に機能します-メインクラスのstartoverrideメソッドからのコード

 @Override
  public void start(Stage stage) throws Exception {
    Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));

    stage.setScene(new Scene(root));
    stage.setFullScreen(true);
    stage.show();
    currentStage = stage;
  }

http://tinypic.com/r/szfmgz/6-2番目のシーンをリロードした後-サンプルコントローラークラスからの以下のコード

 @FXML
  private void handleButtonAction(ActionEvent event) throws IOException {
    Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
    JavaFXApplication12.currentStage.setScene(new Scene(root));
  }
4

2 に答える 2

5

本当の原因はわかりませんが、2つの簡単な回避策があります。方法:1)コンテンツを置き換えるだけで新しいシーンを作成しないで
くださいhandleButtonAction

  @FXML
  private void handleButtonAction(ActionEvent event) throws IOException {
    Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
    JavaFXApplication12.currentStage.getScene().setRoot(root);
  }

2)本当に新しいシーンを作成する必要がある場合は、フルスクリーンに切り替えます

  @FXML
  private void handleButtonAction(ActionEvent event) throws IOException {
    Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
    JavaFXApplication12.currentStage.setScene(new Scene(root));
    Platform.runLater(new Runnable() {
        @Override
        public void run() {
           JavaFXApplication12.currentStage.setFullScreen(false);
           JavaFXApplication12.currentStage.setFullScreen(true);
       }
    });
  }
于 2012-06-30T12:55:13.500 に答える
0

私があなたの懸念を知るのが正しい場合は、プライマリステージを静的として使用するか、ゲッターとセッターを作成して他のコントローラーで使用できるようにする必要があります。したがって、他のfxmlをロードするために同じステージを取得するには、fxmlをロードするときにそれを設定し、別のシーンを作成しないようにすることもできます。新しいシーンのために、実際のコンテンツのサイズが変更されたためです。だからあなたはこれを使うことができます

Main.javaの場合:

YourController objYourController  = loader.getController();
objYourController.setDialogStage(primaryStage);

YourController.javaの場合:

public void setMystage(Stage primaryStage) {
    this.primaryStage= primaryStage;
}

//To load another FXML
Parent root = FXMLLoader.load(getClass().getResource("Sample.fxml"));
primaryStage.getScene().setRoot(rootLayout);

それがあなたを助けることを願っています。

于 2013-07-29T10:50:17.577 に答える