动态修改Javafx中的内联CSS样式
P粉311089279
P粉311089279 2024-04-06 20:57:16
[CSS3讨论组]

我试图在应用程序最大化时更改窗格的背景图像。我的背景是使用内嵌 css 设置的。我为样式设置了两个不同的变量和一个 if 语句。但是,我没有运气让它改变样式。

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

全部回复(1)
P粉412533525

只需向舞台的 maximizedProperty() 添加一个侦听器即可。属性和侦听器是 JavaFX API 的基本部分:您可以在 标准文档,或任何好的 JavaFX 教程。

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

您可能还需要立即使用已有的代码设置适当的样式。

如果您愿意,也可以使用绑定:

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

绑定可以替换您已有的代码;它会立即应用,并且在 maxmizedProperty 发生变化时应用。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号