1 import javafx.application.Application;
2 import javafx.stage.Stage;
3 import javafx.collections.FXCollections;
4 import javafx.collections.ObservableList;
5 import javafx.scene.Scene;
6 import javafx.scene.control.ComboBox;
7 import javafx.scene.control.Label;
8 import javafx.scene.image.ImageView;
9 import javafx.scene.layout.BorderPane;
10
11 public class ComboBoxDemo extends Application {
12
13 private String[] flagTitles = {"Canada", "China", "Denmark",
14 "France", "Germany", "India", "Norway", "United Kingdom",
15 "United States of America"};
16
17
18 private ImageView[] flagImage = {new ImageView("image/ca.gif"),
19 new ImageView("image/china.gif"),
20 new ImageView("image/denmark.gif"),
21 new ImageView("image/fr.gif"),
22 new ImageView("image/germany.gif"),
23 new ImageView("image/india.gif"),
24 new ImageView("image/norway.gif"),
25 new ImageView("image/uk.gif"), new ImageView("image/us.gif")};
26
27
28 private String[] flagDescription = new String[9];
29
30
31 private DescriptionPane descriptionPane = new DescriptionPane();
32
33
34 private ComboBox<String> cbo = new ComboBox<>();
35
36 @Override
37 public void start(Stage primaryStage) {
38
39 flagDescription[0] = "The Canadian national flag ...";
40 flagDescription[1] = "Description for China ... ";
41 flagDescription[2] = "Description for Denmark ... ";
42 flagDescription[3] = "Description for France ... ";
43 flagDescription[4] = "Description for Germany ... ";
44 flagDescription[5] = "Description for India ... ";
45 flagDescription[6] = "Description for Norway ... ";
46 flagDescription[7] = "Description for UK ... ";
47 flagDescription[8] = "Description for US ... ";
48
49
50 setDisplay(0);
51
52
53 BorderPane pane = new BorderPane();
54
55 BorderPane paneForComboBox = new BorderPane();
56 paneForComboBox.setLeft(new Label("Select a country: "));
57 paneForComboBox.setCenter(cbo);
58 pane.setTop(paneForComboBox);
59 cbo.setPrefWidth(400);
60 cbo.setValue("Canada");
61
62 ObservableList<String> items =
63 FXCollections.observableArrayList(flagTitles);
64 cbo.getItems().addAll(items);
65 pane.setCenter(descriptionPane);
66
67
68 cbo.setOnAction(e -> setDisplay(items.indexOf(cbo.getValue())));
69
70
71 Scene scene = new Scene(pane, 450, 170);
72 primaryStage.setTitle("ComboBoxDemo");
73 primaryStage.setScene(scene);
74 primaryStage.show();
75 }
76
77
78 public void setDisplay(int index) {
79 descriptionPane.setTitle(flagTitles[index]);
80 descriptionPane.setImageView(flagImage[index]);
81 descriptionPane.setDescription(flagDescription[index]);
82 }
83
84
88 public static void main(String[] args) {
89 launch(args);
90 }
91 }