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

时间:2014-12-30 05:25:10

标签: java javafx javafx-2 textfield background-color

我正在尝试更改TextField的背景颜色" colorBox0"到" value0"但它摆脱了边界 这是我的代码的简化版本:

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

非常感谢任何帮助 谢谢

4 个答案:

答案 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));