Rumah > Soal Jawab > teks badan
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粉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.