この小さなJavaFXテストアプリケーション
_import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.BorderPane;
import javafx.scene.Paint.Color;
import javafx.scene.shape.Rectangle;
import javafx.stage.Stage;
public class ApplicationWithNonResizableStage extends Application {
public static void main(final String[] args) {
launch(args);
}
@Override
public void start(final Stage primaryStage) throws Exception {
final Rectangle rectangle = new Rectangle(200, 100, Color.POWDERBLUE);
final BorderPane pane = new BorderPane(rectangle);
final Scene scene = new Scene(pane);
primaryStage.setScene(scene);
primaryStage.setResizable(false);
primaryStage.show();
}
}
_
不要なパディングのあるウィンドウを生成します。
呼び出しprimaryStage.setResizable(false)
を削除すると、効果も削除されます。
何が問題になっていますか?
すでにコメントしたように、!/ resizableのこの異なる動作はバグのようなにおいがします(誰かが問題を提出することを検討するかもしれません;-)
手動でサイジングするよりも短い方法は、ステージをシーンに明示的に合わせることです。
primaryStage.setScene(scene);
primaryStage.setResizable(false);
primaryStage.sizeToScene();
これはjdk8では機能しますが、jdk7では機能しないことに注意してください。
便宜上、バグの更新:jewelseaによって提出された元のレポートは、(新しい座標で)の複製として閉じられました https://bugs.openjdk.Java.net/browse/JDK-8089008 -まだオープン、勝利のみであるとコメント。
これは説明ではありませんが、問題を解決します。
@Override
public void start(final Stage primaryStage) throws Exception {
final Dimension d = new Dimension(210, 110);
final Rectangle rectangle = new Rectangle(d.width, d.height, Color.POWDERBLUE);
final BorderPane pane = new BorderPane(rectangle);
pane.maxWidth(d.height);
pane.maxWidth(d.width);
final Scene scene = new Scene(pane, d.width, d.height);
primaryStage.setScene(scene);
primaryStage.setResizable(false);
primaryStage.setWidth(d.width);
primaryStage.setHeight(d.height);
primaryStage.show();
}
キーは、適切なタイミングでStage
の幅と高さを設定することです。
必要なサイズのフレーム-Dimension name = new Dimension(height,width)
-の寸法を作成してから、その寸法サイズを長方形のBorderPaneおよびSceneに設定します。すべてを同じサイズにしたいですか?