2016-06-07 9 views
0

Ich habe eine funktionierende TextField mit meiner CSS-Füllfarbe und eine Label. Aber wenn ich ein Text Steuerelement versuche, habe ich nicht herausgefunden, wie die Füllfarbe in CSS (und ich habe viele Dinge ausprobiert).JavaFX Text Steuerelement: Einstellen der Füllfarbe

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; 
} 

Antwort

5

Beachten Sie, dass Text standardmäßig keine Stilklasse hat. So müssen Sie den Stil Klasse hinzuzufügen:

Text text = new Text("1"); 
text.getStyleClass().add("my-text"); 

Dann können Sie die -fx-fill Eigenschaft von Shape geerbt verwenden:

.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); 
    } 
} 

Text-css-test.css :

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

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

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

enter image description here

+0

Großartig! Also sehe ich, dass 'Text' eine' Form' ist und keine 'Kontrolle'! Es scheint eine ganz besondere Klasse von Objekten zu sein. –

+3

Ja: Ich habe nie viel Gebrauch von 'Text' gemacht und bevorzuge' Label'. Aber dann tendiere ich dazu, mehr geschäftliche Apps zu schreiben und generell 'Control'-Klassen zu verwenden. Wenn Sie ein Steuerelement verwenden (d. H. Eine "Control" oder eine Unterklasse instanziieren), erzwingen Sie das Laden des standardmäßigen CSS-Stylesheets und aktivieren die CSS-Engine. Wenn Sie eine Anwendung haben, die nur 'Shape's verwendet, ist CSS nicht aktiviert, es sei denn, Sie zwingen es. Dies kann beispielsweise in einem Spiel gelten, in dem Sie Ihre eigenen Grafiken und Ihr eigenes Layout verwalten und den Leistungsaufwand von CSS vermeiden möchten. In diesem Szenario könnte "Text" verwendet werden. –

Verwandte Themen