<aside>
🔑 Une liste permet d'afficher plusieurs éléments dans une ou plusieurs colonnes. Plusieurs éléments de la liste peuvent être sélectionnés en même temps. Une ListView
peut être associée à un ScrollPane
si elle contient beaucoup d'éléments.
</aside>
ListView contenant 4 éléments et le deuxième élément est sélectionné.
Les RadioButtons
, CheckBoxs
et ComboBoxs
permettent de sélectionner aussi des éléments. Cependant, ils ne sont pas utilisables de la même façon :
RadioButtons
ne permet que la sélection d'un seul élément dans le groupe. Les éléments sont en général liés.ComboBox
peut remplacer le groupe de RadioButtons
si le groupe contient beaucoup d'éléments dans l'objectif de réduire l'espace fenêtre occupé par les RadioButtons
.CheckBoxs
sont en général indépendants et plusieurs éléments peuvent être sélectionnés en même temps.ListView
peut d'une part remplacer les CheckBoxes
si leur nombre est conséquent et elle est configurée au mode **SelectionMode.MULTIPLE**.
D'autre part, elle peut être similaire à la ComboBox
si elle est configurée au mode SelectionMode.SINGLE
mais elle affiche plus d'éléments et prend plus de place dans la fenêtre.ListView<String> list = new ListView<String>();
ObservableList<String> items =FXCollections.observableArrayList (
"IE", "Firefox", "Chrome", "Edge");
list.setItems(items);
list.setPrefWidth(100);
list.setPrefHeight(75);
list.getSelectionModel().select(1);
list.getSelectionModel().selectedItemProperty().addListener(
new ChangeListener<String>() {
public void changed(ObservableValue<? extends String> ov, String old_val, String new_val) {
System.out.println("old value : "+old_val+", new value : "+new_val);
}
});
Pour contrôler la barre défilante d'une liste, il faut mettre la listView
dans un ScrollPane
et puis configurer la barre défilante du ScrollPane
comme dans le code suivant. D'autres composants peuvent être ajoutés à un ScrollPane
tels qu'un TextArea, Rectangle, etc.
ScrollPane scrollPane= new ScrollPane();
scrollPane.setContent(list);
scrollPane.hbarPolicyProperty().setValue(ScrollPane.ScrollBarPolicy.NEVER);
scrollPane.vbarPolicyProperty().setValue(ScrollPane.ScrollBarPolicy.AS_NEEDED);
<aside>
🔑 Une SplitPane
permet de diviser le contenu de la fenêtre horizontalement ou verticalement en deux parties.
</aside>
Une SplitPane qui divise la fenêtre en deux parties. La partie gauche contient une ListView et la partie droite contient une TextArea.
//créer une ListView et une TextArea et les ajouter au SplitPane
ListView<String> list = new ListView<String>();
ObservableList<String> items =FXCollections.observableArrayList (
"IE", "Firefox", "Chrome", "Edge");
list.setItems(items);
TextArea textArea=new TextArea();
textArea.setFont(Font.font("serif", FontWeight.BOLD, FontPosture.ITALIC,13));
SplitPane splitPane = new SplitPane();
splitPane.setDividerPosition(0, 0.3);
splitPane.getItems().addAll(list, textArea);
<aside> 🔑 La TabPane crée un conteneur avec plusieurs onglets. Chaque onglet peut contenir différents composants graphiques.
</aside>
Une fenêtre contenant une TabPane avec quatre onglets.
TabPane tabPane = new TabPane();
Tab tabStark = new Tab();
ImageView imageViewStark= new ImageView("images/stark.png");
imageViewStark.setFitHeight(25);
imageViewStark.setFitWidth(25);
tabStark.setGraphic(imageViewStark);
tabStark.setText("Stark");
tabStark.setTooltip(new Tooltip("Tab for the house Stark"));
tabStark.setContent(new StackPane(new Label("Stark")));
Tab tabBara = new Tab();
ImageView imageViewBara= new ImageView("images/baratheon.gif");
imageViewBara.setFitHeight(25);
imageViewBara.setFitWidth(25);
tabBara.setGraphic(imageViewBara);
tabBara.setText("Baratheon");
tabBara.setTooltip(new Tooltip("Tab for the house Baratheon"));
tabBara.setContent(new StackPane(new Label("Baratheon")));
Tab tabLannister = new Tab();
ImageView imageViewLannister= new ImageView("images/lannister.gif");
imageViewLannister.setFitHeight(25);
imageViewLannister.setFitWidth(25);
tabLannister.setGraphic(imageViewLannister);
tabLannister.setText("Lannister");
tabLannister.setTooltip(new Tooltip("Tab for the house Lannister"));
tabLannister.setContent(new StackPane(new Label("Lannister")));
Tab tabMartell = new Tab();
ImageView imageViewMartell= new ImageView("images/martell.png");
imageViewMartell.setFitHeight(25);
imageViewMartell.setFitWidth(25);
tabMartell.setGraphic(imageViewMartell);
tabMartell.setText("Martell");
tabMartell.setTooltip(new Tooltip("Tab for the house Martell"));
tabMartell.setContent(new StackPane(new Label("Martell")));
tabPane.getTabs().addAll(tabStark,tabBara,tabLannister,tabMartell);
Scene scene=new Scene(tabPane, 400, 300);