java - 在 JavaFX 中实现只读样式?

标签 java css javafx styleable

我想要具有不同状态的实体(控件或属性),这些状态可以通过 CSS 着色。

例如,对于 TextField,它可以包含两种类型的值,正常值和错误值。一旦包含错误值,就应该显示为“红色”。但实际颜色应该可以从 CSS 定义。

这可以实现吗?

我发现了很多 Styleable* 接口(interface)或类,但它们看起来能够接受任何样式。

我可以编写实体,它从值中派生出它的样式吗?

最佳答案

您可以使用 Node.pseudoClassStateChanged :

TextField tf = new TextField();
final PseudoClass shortText = PseudoClass.getPseudoClass("short");
final PseudoClass longText = PseudoClass.getPseudoClass("long");
tf.textProperty().addListener((observable, oldValue, newValue) -> {
    tf.pseudoClassStateChanged(shortText, false);
    tf.pseudoClassStateChanged(longText, false);
    if (newValue!=null && !newValue.isEmpty()) {
        if (newValue.length() < 5) {
            tf.pseudoClassStateChanged(shortText, true);
        } else {
            tf.pseudoClassStateChanged(longText, true);
        }
    }
});

像这样的CSS:

.text-field:short {
 -fx-background-color: #ffaaaa;
}
.text-field:long {
 -fx-background-color: #aaffaa;
}

尽管老实说,我并不完全确定 Style Class 与 Pseudo Class 的优缺点。

关于java - 在 JavaFX 中实现只读样式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36883838/

相关文章:

Java多线程困惑

asp.net - 使asp.net按钮控件的 Angular 变圆

javascript - 为什么 border-radius 会导致 Chrome 中按钮的样式发生巨大变化?

显示舞台时 JavaFX 按钮显示为选定状态

java - 当命令行未指定配置文件时,Spring Boot 集成测试无法获取默认配置文件并引发错误

java - 如何在 JPanel 上保存图形的当前状态

html - 从 HTML 表格中移除边框

java - javafx 中的多行文本输出

java.io.IOException : rsrc:application/application. bss 错误的二进制 CSS 版本 : 5. 预期版本小于或等于 3

Java动态定义变量类型