Rumah  >  Soal Jawab  >  teks badan

Ubah suai gaya CSS sebaris secara dinamik dalam Javafx

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粉311089279P粉311089279165 hari yang lalu468

membalas semua(1)saya akan balas

  • P粉412533525

    P粉4125335252024-04-07 19:47:58

    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.

    balas
    2
  • Batalbalas