1 import javafx.application.Application;
2 import javafx.stage.Stage;
3 import javafx.collections.FXCollections;
4 import javafx.scene.Scene;
5 import javafx.scene.control.ListView;
6 import javafx.scene.control.ScrollPane;
7 import javafx.scene.control.SelectionMode;
8 import javafx.scene.image.ImageView;
9 import javafx.scene.layout.BorderPane;
10 import javafx.scene.layout.FlowPane;
11
12 public class ListViewDemo extends Application {
13
14 private String[] flagTitles = {"Canada", "China", "Denmark",
15 "France", "Germany", "India", "Norway", "United Kingdom",
16 "United States of America"};
17
18
19 private ImageView[] ImageViews = {
20 new ImageView("image/ca.gif"),
21 new ImageView("image/china.gif"),
22 new ImageView("image/denmark.gif"),
23 new ImageView("image/fr.gif"),
24 new ImageView("image/germany.gif"),
25 new ImageView("image/india.gif"),
26 new ImageView("image/norway.gif"),
27 new ImageView("image/uk.gif"),
28 new ImageView("image/us.gif")
29 };
30
31 @Override
32 public void start(Stage primaryStage) {
33 ListView<String> lv = new ListView<>
34 (FXCollections.observableArrayList(flagTitles));
35 lv.setPrefSize(140, 400);
36 lv.getSelectionModel().setSelectionMode(SelectionMode.MULTIPLE);
37
38
39 FlowPane imagePane = new FlowPane(10, 10);
40 BorderPane pane = new BorderPane();
41 pane.setLeft(new ScrollPane(lv));
42 pane.setCenter(imagePane);
43
44 lv.getSelectionModel().selectedItemProperty().addListener(
45 ov -> {
46 imagePane.getChildren().clear();
47 for (Integer i: lv.getSelectionModel().getSelectedIndices()) {
48 imagePane.getChildren().add(ImageViews[i]);
49 }
50 });
51
52
53 Scene scene = new Scene(pane, 450, 170);
54 primaryStage.setTitle("ListViewDemo");
55 primaryStage.setScene(scene);
56 primaryStage.show();
57 }
58
59
63 public static void main(String[] args) {
64 launch(args);
65 }
66 }