如何更改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;");