JavaFX - CSS
Cascading Style Sheets, noto anche come CSS, è un semplice linguaggio di progettazione inteso a semplificare il processo di presentazione delle pagine web.
CSS gestisce l'aspetto grafico di una pagina web. Utilizzando CSS, puoi controllare il colore del testo, lo stile dei caratteri, la spaziatura tra i paragrafi, la dimensione delle colonne e il layout. Oltre a questi, puoi anche controllare le immagini di sfondo oi colori utilizzati, i design del layout, le variazioni di visualizzazione per diversi dispositivi e dimensioni dello schermo, nonché una varietà di altri effetti.
CSS in JavaFX
JavaFX offre la possibilità di utilizzare i CSS per migliorare l'aspetto dell'applicazione. Il pacchettojavafx.css contiene le classi utilizzate per applicare CSS per le applicazioni JavaFX.
Un CSS comprende regole di stile che vengono interpretate dal browser e quindi applicate agli elementi corrispondenti nel documento.
Una regola di stile è composta da tre parti, che sono:
Selector- Un selettore è un tag HTML a cui verrà applicato uno stile. Questo potrebbe essere qualsiasi tag come<h1> o <table>, eccetera.
Property- Una proprietà è un tipo di attributo del tag HTML. In termini più semplici, tutti gli attributi HTML vengono convertiti in proprietà CSS. Potrebbero essere colore,border, eccetera.
Value- I valori vengono assegnati alle proprietà. Ad esempio, una proprietà color può avere un valorered o #F1F1F1, eccetera.
Puoi inserire la sintassi della regola dello stile CSS come segue:
selector { property: value }
Il foglio di stile predefinito utilizzato da JavaFX è modena.css. Si trova nel jar runtime JavaFX.
Aggiunta del proprio foglio di stile
Puoi aggiungere il tuo foglio di stile a una scena in JavaFX come segue:
Scene scene = new Scene(new Group(), 500, 400);
scene.getStylesheets().add("path/stylesheet.css");
Aggiunta di fogli di stile in linea
Puoi anche aggiungere stili in linea utilizzando il setStyle()metodo. Questi stili sono costituiti solo da coppie chiave-valore e sono applicabili ai nodi su cui sono impostati. Di seguito è riportato un codice di esempio per l'impostazione di un foglio di stile inline su un pulsante.
.button {
-fx-background-color: red;
-fx-text-fill: white;
}
Esempio
Supponiamo di aver sviluppato un'applicazione JavaFX che visualizza un modulo con un campo di testo, un campo password, due pulsanti. Per impostazione predefinita, questo modulo ha l'aspetto mostrato nello screenshot seguente:
Il seguente programma è un esempio che dimostra come aggiungere stili all'applicazione sopra in JavaFX.
Salva questo codice in un file con il nome CssExample.java
import javafx.application.Application;
import static javafx.application.Application.launch;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.PasswordField;
import javafx.scene.layout.GridPane;
import javafx.scene.text.Text;
import javafx.scene.control.TextField;
import javafx.stage.Stage;
public class CssExample extends Application {
@Override
public void start(Stage stage) {
//creating label email
Text text1 = new Text("Email");
//creating label password
Text text2 = new Text("Password");
//Creating Text Filed for email
TextField textField1 = new TextField();
//Creating Text Filed for password
PasswordField textField2 = new PasswordField();
//Creating Buttons
Button button1 = new Button("Submit");
Button button2 = new Button("Clear");
//Creating a Grid Pane
GridPane gridPane = new GridPane();
//Setting size for the pane
gridPane.setMinSize(400, 200);
//Setting the padding
gridPane.setPadding(new Insets(10, 10, 10, 10));
//Setting the vertical and horizontal gaps between the columns
gridPane.setVgap(5);
gridPane.setHgap(5);
//Setting the Grid alignment
gridPane.setAlignment(Pos.CENTER);
//Arranging all the nodes in the grid
gridPane.add(text1, 0, 0);
gridPane.add(textField1, 1, 0);
gridPane.add(text2, 0, 1);
gridPane.add(textField2, 1, 1);
gridPane.add(button1, 0, 2);
gridPane.add(button2, 1, 2);
//Styling nodes
button1.setStyle("-fx-background-color: darkslateblue; -fx-text-fill: white;");
button2.setStyle("-fx-background-color: darkslateblue; -fx-text-fill: white;");
text1.setStyle("-fx-font: normal bold 20px 'serif' ");
text2.setStyle("-fx-font: normal bold 20px 'serif' ");
gridPane.setStyle("-fx-background-color: BEIGE;");
// Creating a scene object
Scene scene = new Scene(gridPane);
// Setting title to the Stage
stage.setTitle("CSS Example");
// Adding scene to the stage
stage.setScene(scene);
//Displaying the contents of the stage
stage.show();
}
public static void main(String args[]){
launch(args);
}
}
Compilare ed eseguire il file java salvato dal prompt dei comandi utilizzando i seguenti comandi.
javac CssExample.java
java CssExample
All'esecuzione, il programma di cui sopra genera una finestra JavaFX come mostrato di seguito.