2016-06-07 56 views
0

我的工作TextField與我的CSS填充顏色和Label。但是當我嘗試一個Text控件時,我還沒有想出如何在CSS中設置填充顏色(並且我嘗試了很多東西)。JavaFX文本控件:設置填充顏色

Label label = new Label("Machine ID"); 
TextField textField = new TextField("1"); 
Text text = new Text("1"); 

的.css:

.text-input { 
    -fx-text-fill: blue;  
} 

.label { 
    -fx-text-fill: blue; 
} 

回答

5

首先請注意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 ; 
} 

enter image description here

+0

太棒了!所以我看到'Text'是一個'Shape',而不是'Control'!它看起來很像一個特殊的對象類。 –

+3

是的:我從來沒有發現多少用於「文本」,並傾向於選擇「標籤」。但是,我傾向於編寫更多商業類型的應用程序,並且通常使用「Control」類。如果你使用一個控件(例如實例化一個Control或任何子類),它會強制加載默認的CSS樣式表並有效地啓用CSS引擎。如果你有一個只使用'Shape'的應用程序,除非你強制使用CSS,否則不會啓用CSS。這可能適用於遊戲,例如,您管理自己的圖形和佈局,並希望避免CSS的性能開銷。在這種情況下可以使用「文本」。 –