Vamos incorporar nosso próprio estilo com o CSS. Uma vantagem do JavaFX é a capacidade de estilizar nodes com o CSS. O JavaFX já vem com um stylesheet padrão, Moderna.css.
Você pode aumentar esses estilos padrões ou substituir por um outro. O exemplo do arquivo CSS é encontrado no arquivo Styles.css é uma simples classe que configura a font para itálico.
.mytext {
-fx-font-style: italic;
}
Para usar esse stylesheet, você precisa carregar o arquivo ou no método start() da aplicação ou no arquivo FXML. Já fizemos o carregamento do arquivo stylesheet no arquivo MyShapesFXML.java.
Scene scene = new Scene(root, Color.LIGHTYELLOW);
scene.getStylesheets().add(getClass()
.getResource(“/styles/Styles.css”).toExternalForm());
Uma vez o arquivo adicionado e habilitado para stylesheet, você pode aplicar o style para um node. Aplicar individualmente style para um node específico podemos fazer assim:
text2.getStyleClass().add(“mytext”);
Aqui, o “mytext” é o style e text2 é o segundo objeto do Text do nosso programa. Alternativamente, você pode especificar o stylesheet no arquivo FXML.
A vantagem dessa abordagem é que styles estão avaliados dentro do Scene Builder. Modificando o arquivo Scene.fxml que carrega o arquivo CSS e aplica a customização style ao text2 do node Text.
1 |
Adicionei ao VBox a linha stylesheets="@../style/Style.css" e adicionei o styleClass="mytext" no node Text. |
Scene.fxml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
<?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.effect.DropShadow?> <?import javafx.scene.effect.Reflection?> <?import javafx.scene.layout.StackPane?> <?import javafx.scene.layout.VBox?> <?import javafx.scene.paint.LinearGradient?> <?import javafx.scene.paint.Stop?> <?import javafx.scene.shape.Ellipse?> <?import javafx.scene.text.Font?> <?import javafx.scene.text.Text?> <VBox alignment="CENTER" prefHeight="350.0" prefWidth="350.0" spacing="50.0" stylesheets="@../style/Style.css" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1 fx" fx:controller="main.java.br.com.cursojavanow.FXMLController" > <children> <StackPane fx:id="stackPane" onMouseClicked="#handleMouseClick" prefHeight="150.0" prefWidth="200.0"> <children> <Ellipse radiusX="110.0" radiusY="70.0"> <fill> <LinearGradient endX="0.5" endY="1.0" startX="0.5"> <stops> <Stop color="DODGERBLUE" /> <Stop color="LIGHTBLUE" offset="0.5" /> <Stop color="LIGHTGREEN" offset="1.0" /> </stops> </LinearGradient> </fill> <effect> <DropShadow color="GREY" offsetX="5.0" offsetY="5.0" /> </effect> </Ellipse> <Text text="My Shapes"> <font> <Font name="Arial Bold" size="24.0" /> </font> <effect> <Reflection fraction="0.8" topOffset="1.0" /> </effect> </Text> </children> </StackPane> <Text fx:id="text2" styleClass="mytext" text="Animation Status: "> <font> <Font name="Arial Bold" size="18.0" /> </font> </Text> </children> </VBox> |
Fonte: The Definitive Guide to Modern Java Clients with JavaFX
Deixe um comentário