JavaFX 在 CSS 中更改禁用文本字段的文本颜色
JavaFX Change textcolor of disabled textfield in CSS
我在舞台上有一个 texfield:
@FXML
private TextField tfAdUsername;
tfAdUsername.setPromptText(userName);
tfAdUsername.setDisable(true);
文本颜色是浅灰色,我想把它改成黑色:
.text-field:readonly {
-fx-background-color: #E0E0E2;
-fx-border-color: #94BBDA;
-fx-text-fill: #000000;
}
.text-field:disabled {
-fx-background-color: #E0E0E2;
-fx-border-color: #94BBDA;
-fx-text-fill: #000000;
}
这不会更改文本颜色。 CSS 属性 的正确用法是什么?
禁用时颜色变为灰色的原因是不透明度发生变化。只需尝试将以下 css 添加到您的文本字段。
-fx-opacity: 1.0;
工作示例(使用setStyle())
public class KeyStroke extends Application {
@Override
public void start(Stage primaryStage) {
Pane root = new Pane();
TextField textField = new TextField("Itachi");
textField.setDisable(true);
textField.setStyle("-fx-opacity: 1.0;");
root.getChildren().add(textField);
Scene scene = new Scene(root, 200, 200);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
要更改不透明度,请使用:
.text-input:disabled {
-fx-opacity: 1.0;
}
在 css 文件中。
更改使用的文本颜色(在我正确阅读问题后我知道这不是被问到的。)
来自 modena.css 样式表:
.root {
/* Used for the inside of text boxes, password boxes, lists, trees, and
* tables. See also -fx-text-inner-color, which should be used as the
* -fx-text-fill value for text painted on top of backgrounds colored
* with -fx-control-inner-background.
*/
-fx-control-inner-background: derive(-fx-base,80%);
/* Version of -fx-control-inner-background for alternative rows */
-fx-control-inner-background-alt: derive(-fx-control-inner-background,-2%);
/* One of these colors will be chosen based upon a ladder calculation
* that uses the brightness of a background color. Instead of using these
* colors directly as -fx-text-fill values, the sections in this file should
* use a derived color to match the background in use. See also:
*
* -fx-text-base-color for text on top of -fx-base, -fx-color, and -fx-body-color
* -fx-text-background-color for text on top of -fx-background
* -fx-text-inner-color for text on top of -fx-control-inner-color
* -fx-selection-bar-text for text on top of -fx-selection-bar
*/
}
.root {
-fx-text-inner-color: #FF01F3;
}
例如:
@Override
public void start(Stage primaryStage) {
VBox root = new VBox();
root.setAlignment(Pos.CENTER);
Button btn = new Button();
TextField text= new TextField();
btn.setText("Press me!");
btn.setOnAction((ActionEvent event) -> {
text.setText("Goodbye World");
});
root.getChildren().addAll(btn, text);
Scene scene = new Scene(root, 300, 250);
scene.getStylesheets().addAll(getClass().getResource("css.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
}
文本字段中文本的颜色将是粉红色?紫色?
顺便说一句,这不是单独更改每个文本字段颜色的方法,如果您为根更改此颜色,那么所有文本字段都将使用此颜色而不是通常的黑色。我不知道如何将同一应用程序中一个文本字段的颜色更改为蓝色,而将另一个文本字段的颜色更改为红色。
我在舞台上有一个 texfield:
@FXML
private TextField tfAdUsername;
tfAdUsername.setPromptText(userName);
tfAdUsername.setDisable(true);
文本颜色是浅灰色,我想把它改成黑色:
.text-field:readonly {
-fx-background-color: #E0E0E2;
-fx-border-color: #94BBDA;
-fx-text-fill: #000000;
}
.text-field:disabled {
-fx-background-color: #E0E0E2;
-fx-border-color: #94BBDA;
-fx-text-fill: #000000;
}
这不会更改文本颜色。 CSS 属性 的正确用法是什么?
禁用时颜色变为灰色的原因是不透明度发生变化。只需尝试将以下 css 添加到您的文本字段。
-fx-opacity: 1.0;
工作示例(使用setStyle())
public class KeyStroke extends Application {
@Override
public void start(Stage primaryStage) {
Pane root = new Pane();
TextField textField = new TextField("Itachi");
textField.setDisable(true);
textField.setStyle("-fx-opacity: 1.0;");
root.getChildren().add(textField);
Scene scene = new Scene(root, 200, 200);
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
要更改不透明度,请使用:
.text-input:disabled {
-fx-opacity: 1.0;
}
在 css 文件中。
更改使用的文本颜色(在我正确阅读问题后我知道这不是被问到的。)
来自 modena.css 样式表:
.root { /* Used for the inside of text boxes, password boxes, lists, trees, and * tables. See also -fx-text-inner-color, which should be used as the * -fx-text-fill value for text painted on top of backgrounds colored * with -fx-control-inner-background. */ -fx-control-inner-background: derive(-fx-base,80%); /* Version of -fx-control-inner-background for alternative rows */ -fx-control-inner-background-alt: derive(-fx-control-inner-background,-2%); /* One of these colors will be chosen based upon a ladder calculation * that uses the brightness of a background color. Instead of using these * colors directly as -fx-text-fill values, the sections in this file should * use a derived color to match the background in use. See also: * * -fx-text-base-color for text on top of -fx-base, -fx-color, and -fx-body-color * -fx-text-background-color for text on top of -fx-background * -fx-text-inner-color for text on top of -fx-control-inner-color * -fx-selection-bar-text for text on top of -fx-selection-bar */ }
.root {
-fx-text-inner-color: #FF01F3;
}
例如:
@Override
public void start(Stage primaryStage) {
VBox root = new VBox();
root.setAlignment(Pos.CENTER);
Button btn = new Button();
TextField text= new TextField();
btn.setText("Press me!");
btn.setOnAction((ActionEvent event) -> {
text.setText("Goodbye World");
});
root.getChildren().addAll(btn, text);
Scene scene = new Scene(root, 300, 250);
scene.getStylesheets().addAll(getClass().getResource("css.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
}
文本字段中文本的颜色将是粉红色?紫色?
顺便说一句,这不是单独更改每个文本字段颜色的方法,如果您为根更改此颜色,那么所有文本字段都将使用此颜色而不是通常的黑色。我不知道如何将同一应用程序中一个文本字段的颜色更改为蓝色,而将另一个文本字段的颜色更改为红色。