当前位置: 首页 > 面试题库 >

在JavaFX中实现只读样式?

公羊光明
2023-03-14
问题内容

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

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

这可能实现吗?

我发现了很多Styleable*接口或类,但是它们看起来可以接受任何样式。

我可以编写和实体,从价值中衍生出风格吗?


问题答案:

您可以使用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 vs. Pseudo Class的优缺点。



 类似资料:
  • 我真的不知道如何获得这个实现,即获取一个数据,它将是动态的,并用上面的样式表示。 我衷心感谢你抽出时间。 我得到了 原因:controllers.home_pageController处的java.lang.nullPointerException。controlers.home_pageController处的getGrid(home_pageController.java:85)。start(

  • 问题内容: 查看mozilla文档,查看正则表达式示例(标题为“使用匹配结果创建数组”),我们有如下语句: 输入:一个只读属性,它反映与正则表达式匹配的原始字符串。 index:只读属性,它是字符串中匹配项的从零开始的索引。 等等…是否可以在JavaScript中创建具有只读属性的对象,或者这是对特定浏览器实现的内置类型的特权? 问题答案: 编辑: 自从编写了此答案以来,EcmaScript 5中

  • 问题内容: 我有一个问题,我有点被困住了,一位同事告诉我,这将是寻求帮助的好地方。 我正在尝试在Java中实现C风格的位域。这是一个粗略的示例(目前我还没有实际的代码)。 我有很多来自遗留代码的类似样式的位域。我需要提出一种等效的Java方法的原因是,我正在开发将使用Java与其他使用UDP的旧应用程序进行通信的代码。 我没有重写代码的选择。我知道这种方法不是可移植的,存在字节序问题(以及填充/对

  • 我的问题是关于创建实体集合的。我知道“如何嵌入收集表单”,并成功地使用了它。但在这种情况下,我有: 简单类 文体词典 我不需要为DicStyle对象创建表单,因为这是只读对象=字典(不可更改)。所以,我想创建一个类似这样的表单: 当然是伪代码。我无法想象如何实施它。 结果 假设我有: 表“Thing”有一行(id=1)。 在表单中,我为这个东西选择了两个DicStyle(id=3,id=5)。因此

  • 我开始着手一个JavaFX项目,在这个项目中,我想添加一个复制的文本,而不必更改驱动程序中的格式和图像(它应该像open office一样工作)。图像应该能够放置在文本中不同的位置。因此,我需要一个可以处理rtf格式的控制字段。 为此,我找到了RichTextFX。文档中解释了如何使用Maven或Grandle运行RichTextFX。我不使用Maven或Grandle,因此我想知道是否有可能在不

  • 我正在编写一个JavaFX应用程序,它需要绘制有向图。我想通过形状来实现这一点,因为我希望可以拖动顶点。我用一个圆来表示一个顶点,但是当我试图找到一个形状来表示有向边时,我遇到了一个问题。< br >有向边应该看起来像一个箭头,我的想法是用一条线和一个三角形来表示它。所以我扩展了javafx.scene.shape.Line类: 由于顶点可以拖动,当然边缘应该同时移动,这意味着箭头内的三角形应该根