Моя (неудачная) попытка:
Код: Выделить всё
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.HBox;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
public class FXTextFieldDemo extends Application {
static TextField nameField;
@Override
public void start(Stage primaryStage) {
primaryStage.setScene(createScene());
primaryStage.setTitle("TextField Demo");
primaryStage.show();
}
private static Scene createScene() {
VBox root = createRoot();
Scene scene = new Scene(root);
scene.getStylesheets().add("styles/styles.css");
return scene;
}
private static VBox createRoot() {
VBox root = new VBox(10);
HBox nameRow = createNameRow();
root.getChildren().add(nameRow);
root.paddingProperty().setValue(new Insets(10));
return root;
}
private static HBox createNameRow() {
HBox nameRow = new HBox(10);
nameRow.setAlignment(Pos.CENTER_LEFT);
Label nameLabel = new Label("Name");
nameRow.getChildren().add(nameLabel);
nameRow.getChildren().add(createNameField());
return nameRow;
}
private static TextField createNameField() {
nameField = new TextField();
nameField.textProperty().setValue("Joseph");
nameField.editableProperty().setValue(false);
return nameField;
}
public static void main(String[] args) {
launch(args);
}
}
Код: Выделить всё
/* resources/styles/styles.css */
.text-field:editable {
-fx-text-fill: black;
}
.text-field:not(:editable) {
-fx-text-fill: gray;
}

Java 8.
Подробнее здесь: https://stackoverflow.com/questions/797 ... d-with-css