Ubah suai gaya CSS sebaris secara dinamik dalam Javafx
P粉311089279
P粉311089279 2024-04-06 20:57:16
0
1
887

Saya cuba menukar imej latar belakang anak tetingkap apabila apl dimaksimumkan. Latar belakang saya ditetapkan menggunakan css sebaris. Saya menyediakan dua pembolehubah berbeza dan pernyataan if untuk gaya. Walau bagaimanapun, saya tidak bernasib baik untuk menukar gaya.

String cssStyle = "-fx-background-image: url(\'file:images/poker_table.png\');" +
                 "-fx-background-position: center center;" +
                 "-fx-background-radius: 15;" + // ************* For rounded corners
                 "-fx-background-size: 100% 100%;";
String cssStyle2 = "-fx-background-image: url(\'file:images/poker_table.jpg\');" +
                  "-fx-background-position: center center;" +
                  "-fx-background-radius: 15;" +
                  "-fx-background-size: 100% 100%;";
if (!primaryStage.isMaximized())
{   gameScreen.setStyle(cssStyle);
}
else
{   gameScreen.setStyle(cssStyle2);
}

P粉311089279
P粉311089279

membalas semua(1)
P粉412533525

Hanya tambahkan pendengar ke pentas maximizedProperty(). Sifat dan pendengar ialah bahagian asas API JavaFX: anda boleh menemuinya dalam dokumentasi standard, atau mana-mana tutorial JavaFX yang bagus.

primaryStage.maximizedProperty().addListener((obs, wasMaximized, isNowMaximized) -> {
    if (isNowMaximized) {
        gameScreen.setStyle(cssStyle2);
    } else {
        gameScreen.setStyle(cssStyle);
    }
});

Anda juga mungkin mahu menetapkan gaya yang sesuai dengan segera menggunakan kod sedia ada.

Anda juga boleh menggunakan binding jika anda lebih suka:

gameScreen.styleProperty().bind(Bindings.createStringBinding(
    () -> primaryStage.isMaximized() ? cssStyle2 : cssStyle,
    primaryStage.maximizedProperty()
);

Pengikatan menggantikan kod sedia ada anda; ia digunakan serta-merta dan apabila maxmizedProperty berubah.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan