【问题标题】:JavaFX CSS Styling from Java来自 Java 的 JavaFX CSS 样式
【发布时间】:2018-03-01 10:48:05
【问题描述】:

我想为一个元素分配一个样式类。

我有一个 CSS:

.text-field{
    -fx-background-color: #333333;
    -fx-background-insets: 0 -1 -1 -1, 0 0 0 0, 0 -1 3 -1;
    -fx-text-fill: white; 
    -fx-prompt-text-fill: white;
    -fx-font-family: Trebuchet MS;
    -fx-font-size: 14px;
}

.text-field:focused{
    -fx-focus-color: white;
    -fx-prompt-text-fill: white;
    -fx-highlight-fill:  grey ;
}

还有我正在使用的 java 代码:

JFXTextField textField = new JFXTextField();                    
textField.getStylesheets().add(this.getClass().getResource("/css/TextField_Style_Sheet.css").toExternalForm());
textField.getStyleClass().clear();
textField.getStyleClass().add("text-field");

我遇到的问题是 ":focused" 样式未应用于此元素。 我做错了什么?

已经在元素中直接使用场景构建器对其进行了测试,似乎“焦点颜色”和“非焦点颜色”选项中的设置覆盖了 text-field:focused 样式。 由于 JFXTextField 是在运行时创建的,因此默认的焦点颜色似乎覆盖了 css text-field:focused 样式。

如何解决?

【问题讨论】:

标签: css javafx stylesheet


【解决方案1】:

您将节点的所有样式类替换为单个样式类:text-field。

查看 modena.css 可以看到TextFields 的样式是在样式类text-input 的规则中定义的。

这些规则也是 CSS 变量 -fx-focus-color 用于TextFields 的唯一地方。由于您确保不再应用这些规则,因此在修改 -fx-focus-color 变量时看不到任何可见效果。

如果您确实想保留旧样式的部分,则不应删除在创建节点时添加的样式类并修改不适合您自己样式需要的属性。如果您清除样式类,您将负责从头开始重建外观。

【讨论】:

  • 我仍然不明白我必须做什么。已经评论了 getStyleClass().clear() 行,但它什么也没做。
  • 取决于您要执行的操作。使用带有JFXTextField 的样式表确实会改变它的外观,除非您也从代码中分配属性。在这种情况下,这些值具有更高的优先级。
  • 太棒了!这对我有用。如果您将评论作为答案,我会将其视为对我来说有效的答案。谢谢
【解决方案2】:

将focused 更改为hover 像这样: .文本字段:悬停{ ..}

【讨论】:

    猜你喜欢
    • 2016-11-21
    • 1970-01-01
    • 2017-07-10
    • 1970-01-01
    • 2017-05-17
    • 2020-04-26
    • 2017-09-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多