用于动态UI scalling的JavaFX Scale类

时间:2018-04-04 17:05:05

标签: java user-interface javafx java-8 javafx-8

我正在使用JavaFX从事教育克朗代克游戏项目。 我要做的是创建整个游戏的动态缩放。

我使用了scale类来这样做。它似乎差不多好,因为它改变了所有界面元素的比例,除了背景之外,它比实际窗口小一点。

我已经尝试使用BackgroundSize进行操作,但它没有做任何更改。我该如何解决?

非常感谢你的帮助!

我添加图片以显示问题:

enter image description here enter image description here

public class Klondike extends Application {

private static final double WINDOW_WIDTH = 1400;
private static final double WINDOW_HEIGHT = 900;
Button changeThemeButton;
Button newGame;
Button undo;

public static void main(String[] args) {
    launch(args);
}

@Override
public void start(Stage primaryStage) {
    startGame(primaryStage);
}

public void startGame(Stage primaryStage){
    Card.loadCardImages();
    Game game = new Game();
    game.setTableBackground(new Image(Common.loadThemeSettings().get(0)));

    initializeButtons(game, primaryStage);

    primaryStage.setTitle("Klondike Solitaire");
    primaryStage.setScene(new Scene(game, WINDOW_WIDTH, WINDOW_HEIGHT));

    // SCALLING:

    Scale scale = new Scale(1, 1);
    scale.xProperty().bind(game.widthProperty().divide(WINDOW_WIDTH));
    scale.yProperty().bind(game.heightProperty().divide(WINDOW_HEIGHT));
    game.getTransforms().add(scale);
    primaryStage.setResizable(true);

    // SCALLING END:
    primaryStage.show();
}

背景图片:

    public void setTableBackground(Image tableBackground) {
    setBackground(new Background(new BackgroundImage(tableBackground,
            BackgroundRepeat.REPEAT, BackgroundRepeat.REPEAT,
            BackgroundPosition.CENTER, BackgroundSize.DEFAULT)));
}

0 个答案:

没有答案