如何更改TextField的背景颜色而不更改javafx中的边框?

我试图将我的TextField“colorBox0”的背景颜色更改为“value0”,但它摆脱了边框。
这是我的代码的简化版本:

static Paint value0 = Paint.valueOf("FFFFFF"); TextField colorBox0; colorBox0.setBackground(new Background(new BackgroundFill(value0, CornerRadii.EMPTY, Insets.EMPTY))); 

很感谢任何forms的帮助
谢谢

我发现你可以通过使用to string方法和substring方法从字符串和变量构造一个css代码字符串,如下所示:

 colorBox0 .setStyle("-fx-control-inner-background: #"+value0.toString().substring(2)); 

查看TextField的(缩短的)默认JavaFX样式解释了很多:

 .text-input { -fx-background-color: linear-gradient(to bottom, derive(-fx-text-box-border, -10%), -fx-text-box-border), linear-gradient(from 0px 0px to 0px 5px, derive(-fx-control-inner-background, -9%), -fx-control-inner-background); -fx-background-insets: 0, 1; -fx-background-radius: 3, 2; } 

因此背景是包含边框的分层背景。 这种技术在整个JavaFX中使用很多。 但是只修改一种颜色非常容易。

首先,我们需要为TextField分配一个新的自定义样式类:

 TextField textField = new TextField(); textField.getStyleClass().add("custom"); 

和CSS文件:

 .custom { -fx-control-inner-background: orange; } 

如您所见,您不必覆盖文本字段的所有样式,仅覆盖用于背景的颜色变量就足够了。

尝试使用CSS设置颜色:

 TextField colorBox0; colorBox0.setStyle("-fx-background-color: white;");