Spinner JavaFX: C’est un champs de texte sur une seule ligne qui nous permet de choisir un nombre ou une valeur dans une liste de valeur.
Utilisation d’un Spinner
Pour utiliser ce control Spinner JavaFX, il suffit de l’instancier c’est-a-dire créer un nouvel objet de la classe Spinner comme ceci:
Vous pouvez spécifier le type de données que va contenir votre Spinner.
Spinner<Integer> spinner = new Spinner<>();
Nous avons créer un Spinner vide qui ne contient pas de données.
définir les valeur Spinner JavaFX
Pour que notre Spinner affiche les données il faut passer par la classe SpinnerValueFactory. Cette classe va nous permet de définir des valeur pour notre Spinner.
Exemple
SpinnerValueFactory valueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(1,5,1);
Nous avons créer une séquence de valeur pour notre Spinner. les deux premiers paramètre corresponds a l’intervalle de valeur que doit afficher le Spinner et le dernier correspond a la valeur initiale.
Associer de valeur a un Spinner
Pour associer la séquence de valeurs a notre Spinner il suffit d’utiliser la méthode setValueFactory sur l’objet Spinner en en lui passant notre séquence de valeur comme ceci:
Spinner<Integer> spinner = new Spinner<>();
SpinnerValueFactory valueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(1,5,1);
spinner.setValueFactory(valueFactory);
Voici un exemple de code qui affiche un Spinner dans une scène de graphe après son exécution.
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Spinner;
import javafx.scene.control.SpinnerValueFactory;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
public class ExampleSpinner extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Label label = new Label("Selectionner une valeur");
Spinner<Integer> spinner = new Spinner<>();
SpinnerValueFactory valueFactory = new SpinnerValueFactory.IntegerSpinnerValueFactory(1,5,1);
spinner.setValueFactory(valueFactory);
FlowPane root = new FlowPane();
root.setHgap(10);
root.setVgap(10);
root.setPadding(new Insets(10));
root.getChildren().addAll(label,spinner);
Scene scene = new Scene(root, 600, 300);
primaryStage.setTitle("Spinner JavaFX");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
Vous pouvez changer l’emplacement et la direction des touches fléchées de votre Spinner. Voici un exemple dans lequel vous allez apprendre a change l’emplacement et la directions de flèches.
import javafx.application.Application;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Spinner;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
public class SpinnerStyle extends Application {
@Override
public void start(Stage stage) {
String[] style = new String[] { "",
Spinner.STYLE_CLASS_ARROWS_ON_RIGHT_HORIZONTAL,
Spinner.STYLE_CLASS_ARROWS_ON_LEFT_VERTICAL,
Spinner.STYLE_CLASS_ARROWS_ON_LEFT_HORIZONTAL,
Spinner.STYLE_CLASS_SPLIT_ARROWS_VERTICAL,
Spinner.STYLE_CLASS_SPLIT_ARROWS_HORIZONTAL
};
FlowPane root = new FlowPane();
root.setHgap(10);
root.setVgap(10);
root.setPadding(new Insets(10));
for (String styleClass : style) {
Spinner<Integer> spinner = new Spinner<Integer>(5, 30, 5);
spinner.getStyleClass().add(styleClass);
root.getChildren().add(spinner);
}
Scene scene = new Scene(root, 600, 300);
stage.setTitle("Spinner JavaFX");
stage.setScene(scene);
stage.show();
}
public static void main(String[] args) {
Application.launch(args);
}
}
Vous pouvez utiliser utiliser une liste Observable pour Dans un Spinner. Voici un exemple de code:
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Spinner;
import javafx.scene.control.SpinnerValueFactory;
import javafx.scene.layout.FlowPane;
import javafx.stage.Stage;
public class ExampleSpinner1 extends Application {
@Override
public void start(Stage primaryStage) throws Exception {
Label label = new Label("Selectionner Un Jour");
ObservableList <String> list = FXCollections.observableArrayList(
"Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi","Dimance"
);
Spinner<String> spinner = new Spinner<>();
SpinnerValueFactory valueFactory = new SpinnerValueFactory.ListSpinnerValueFactory<String>(list);
spinner.setValueFactory(valueFactory);
FlowPane root = new FlowPane();
root.setHgap(10);
root.setVgap(10);
root.setPadding(new Insets(10));
root.getChildren().addAll(label,spinner);
Scene scene = new Scene(root, 600, 300);
primaryStage.setTitle("Spinner JavaFX");
primaryStage.setScene(scene);
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}