来自Java的JavaFXCSS样式

来自Java的JavaFXCSS样式,css,javafx,stylesheet,Css,Javafx,Stylesheet,我想为元素指定一个样式类 我有一个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; }

我想为元素指定一个样式类

我有一个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”样式没有应用于这个元素。 我做错了什么

已经在元素中直接使用scenebuilder对其进行了测试,“聚焦颜色”和“取消聚焦颜色”选项中的设置似乎覆盖了文本字段:聚焦样式。 由于jfxtfield是在运行时创建的,因此默认的焦点颜色似乎覆盖了css文本字段:focused样式


如何解决此问题?

将节点的所有样式类替换为单个样式类:
文本字段

查看modena.css以查看
TextField
s的样式是在样式类
文本输入的规则中定义的

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


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

聚焦更改为
悬停
这样地: .文本字段:悬停{
..}

放在一边。在@Jean BaptisteYunès中看不到任何
-fx焦点颜色
,这是默认样式表中定义的查找颜色;它不是CSS属性,所以它不在文档中。我仍然不知道我要做什么。已经对getStyleClass().clear()行进行了注释,但它不起任何作用。这取决于您尝试执行的操作。将样式表与
jfxtfield
一起使用确实会改变它的外观,除非您也从代码中分配属性。在这种情况下,这些值具有更高的优先级。太好了!这对我很管用。如果你把你的评论作为答案,我会检查它是否对我有效。非常感谢。