首先请注意Text
默认情况下没有样式类。所以,你需要添加样式类:
Text text = new Text("1");
text.getStyleClass().add("my-text");
然后你可以使用-fx-fill
财产继承Shape
:
.my-text {
-fx-fill: blue ;
}
SSCCE:
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.VBox;
import javafx.scene.text.Text;
import javafx.stage.Stage;
public class TextCSSTest extends Application {
@Override
public void start(Stage primaryStage) {
VBox root = new VBox(10);
TextField textField = new TextField("Text Field");
Label label = new Label("Label");
Text text = new Text("Text");
text.getStyleClass().add("my-text");
root.getChildren().addAll(textField, label, text);
root.setAlignment(Pos.CENTER);
root.setPadding(new Insets(20));
Scene scene = new Scene(root);
scene.getStylesheets().add("text-css-test.css");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
文本的CSS-test.css :
.my-text {
-fx-fill: blue ;
}
.label {
-fx-text-fill: green ;
}
.text-input {
-fx-text-fill: red ;
}
太棒了!所以我看到'Text'是一个'Shape',而不是'Control'!它看起来很像一个特殊的对象类。 –
是的:我从来没有发现多少用于“文本”,并倾向于选择“标签”。但是,我倾向于编写更多商业类型的应用程序,并且通常使用“Control”类。如果你使用一个控件(例如实例化一个Control或任何子类),它会强制加载默认的CSS样式表并有效地启用CSS引擎。如果你有一个只使用'Shape'的应用程序,除非你强制使用CSS,否则不会启用CSS。这可能适用于游戏,例如,您管理自己的图形和布局,并希望避免CSS的性能开销。在这种情况下可以使用“文本”。 –