我正在尝试更改TextField的背景颜色" colorBox0"到" value0"但它摆脱了边界 这是我的代码的简化版本:
static Paint value0 = Paint.valueOf("FFFFFF");
TextField colorBox0;
colorBox0.setBackground(new Background(new BackgroundFill(value0, CornerRadii.EMPTY, Insets.EMPTY)));
非常感谢任何帮助 谢谢
答案 0 :(得分:11)
我发现你可以通过使用to string方法和子串方法来构造字符串和变量的css代码字符串,如下所示:
colorBox0
.setStyle("-fx-control-inner-background: #"+value0.toString().substring(2));
答案 1 :(得分:7)
查看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;
}
如您所见,您不必覆盖文本字段的所有样式,仅覆盖用于背景的颜色变量就足够了。
答案 2 :(得分:4)
尝试使用CSS设置颜色:
TextField colorBox0;
colorBox0.setStyle("-fx-background-color: white;");
答案 3 :(得分:0)
带有颜色转换的优雅解决方案:
static Paint black = Paint.valueOf(Integer.toHexString(Color.BLACK.hashCode()));
TextField textfield;
textField.setStyle(
"-fx-control-inner-background: #"+black.toString().substring(2));