2016-06-07 171 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的性能开销。在这种情况下可以使用“文本”。 –