3

現在、最小シーン サイズを 800x600 ピクセルにしたいアプリケーションを作成しています。最初の試行では単純に and を使用stage.setMinWidthstage.setMinHeightましたが、これらの値はシーンだけでなくウィンドウ全体に対してカウントされるため、シーンの 7xx x 5xx のみが表示されます。そこで、Stage javadoc を検索して、sizeToSceneまさに必要なものを見つけました。呼び出し後、ステージ サイズは 800x600 よりも大きく、シーンは 800x600 ピクセルで完全に表示されます。

現在の唯一の問題は、このメソッド呼び出しがステージの幅と高さをステージ自体に保存しないため、最小の幅と高さを によって計算された現在の幅と高さに設定できないことsizeToSceneです。

stage.getWidthstage.getHeight常に NaN を返します。

これらの値を取得したので (スクリーンショットを作成し、paint.net でチェックしました)、これらの値をハードコーディングできましたが、これは他の OS/Windows のバージョン/デコレータでは機能しません。

私は Windows 7、JavaFX 2.2、JDK 7_21 で作業しています。

メソッド呼び出しの後に幅と高さを取得する方法を知っている人はいますか? 私の問題が何であるかを理解していただければ幸いです。コードが必要な場合はお渡しできますが、必要ないと思います。ありがとう!

4

1 に答える 1

7

ステージの幅と高さの値は、ステージが表示された後に計算されます。次のステージの後に、これらの値の最小値を設定できます。

@Override
public void start(Stage primaryStage) {
    StackPane root = new StackPane();
    Scene scene = new Scene(root, 800, 600);
    primaryStage.setScene(scene);

    System.out.println("before sceneW " + scene.getWidth());
    System.out.println("before sceneH " +  scene.getHeight());
    System.out.println("before stageW " + primaryStage.getWidth());
    System.out.println("before stageH " + primaryStage.getHeight());

    primaryStage.show();

    System.out.println("after sceneW " + scene.getWidth());
    System.out.println("after sceneH " +  scene.getHeight());
    System.out.println("after stageW " + primaryStage.getWidth());
    System.out.println("after stageH " + primaryStage.getHeight());

    primaryStage.setMinWidth(primaryStage.getWidth());
    primaryStage.setMinHeight(primaryStage.getHeight());
}

sizeToScene()Swing の (AWT) に似ていpack()ます。ここでは必要ないと思います。

于 2013-06-23T22:09:12.113 に答える