TextFieldの背景色を「colorBox0」から「value0」に変更しようとしていますが、境界線が削除されます。
これは私のコードの簡略版です。
static Paint value0 = Paint.valueOf("FFFFFF");
TextField colorBox0;
colorBox0.setBackground(new Background(new BackgroundFill(value0, CornerRadii.EMPTY, Insets.EMPTY)));
どんな助けも大歓迎です
ありがとうございました
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全体で多く使用されています。ただし、1色だけを変更するのは非常に簡単です。
最初に、新しいカスタムスタイルクラスを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;");
色変換を備えたエレガントなソリューション:
static Paint black = Paint.valueOf(Integer.toHexString(Color.BLACK.hashCode()));
TextField textfield;
textField.setStyle(
"-fx-control-inner-background: #"+black.toString().substring(2));