首先請注意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的性能開銷。在這種情況下可以使用「文本」。 –