Ich versuche, das Hintergrundbild eines Bereichs zu ?ndern, wenn die App maximiert ist. Mein Hintergrund wird mit Inline-CSS festgelegt. Ich habe zwei verschiedene Variablen und eine if-Anweisung für den Stil eingerichtet. Es gelingt mir jedoch nicht, den Stil zu ?ndern.
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); }
只需向舞臺的 maximizedProperty()
添加一個偵聽器即可。屬性和偵聽器是 JavaFX API 的基本部分:您可以在 標(biāo)準(zhǔn)文檔,或任何好的 JavaFX 教程。
primaryStage.maximizedProperty().addListener((obs, wasMaximized, isNowMaximized) -> { if (isNowMaximized) { gameScreen.setStyle(cssStyle2); } else { gameScreen.setStyle(cssStyle); } });
您可能還需要立即使用已有的代碼設(shè)置適當(dāng)?shù)臉邮健?/p>
如果您愿意,也可以使用綁定:
gameScreen.styleProperty().bind(Bindings.createStringBinding( () -> primaryStage.isMaximized() ? cssStyle2 : cssStyle, primaryStage.maximizedProperty() );
綁定可以替換您已有的代碼;它會立即應(yīng)用,并且在 maxmizedProperty
發(fā)生變化時應(yīng)用。