这里是正在执行的程序的gif:
我正在尝试编写一个程序,让用户从每个ListView中选择一个对象,然后按一个按钮以在标签中显示所选的选项。现在,该按钮不会显示标签。它仅在按下按钮后我选择一个选项时出现。我也不确定如何使标签从多个ListView中获取文本。
这是我的代码:
private final String[] crust = {"Thin", "Thick", "Cheese Stuffed",
"Detroit Style"};
private final String[] cheese = {"Mozzarella", "Provolone", "Parmesan",
"Grana Podano"};
private final String[] meat = {"Sausage", "Pepperoni", "Bacon", "Ham"};
private final String[] vegi = {"Green Pepper", "Onion", "Olives", "Mushrooms"};
private final String[] sauce = {"Red Sauce", "White Sauce", "Pesto", "Ranch"};
@Override
public void start(Stage primaryStage) {
HBox topBox = new HBox(4);
ListView<String> crustList = new ListView<> (FXCollections
.observableArrayList(crust));
ListView<String> cheeseList = new ListView<> (FXCollections
.observableArrayList(cheese));
ListView<String> meatList = new ListView<> (FXCollections
.observableArrayList(meat));
ListView<String> vegiList = new ListView<> (FXCollections
.observableArrayList(vegi));
ListView<String> sauceList = new ListView<> (FXCollections
.observableArrayList(sauce));
crustList.setMaxHeight(100);
cheeseList.setMaxHeight(100);
meatList.setMaxHeight(100);
vegiList.setMaxHeight(100);
sauceList.setMaxHeight(100);
Label pizzaType = new Label();
topBox.getChildren().addAll(crustList, cheeseList, meatList, vegiList,
sauceList);
Button orderButton = new Button("Order");
orderButton.setOnAction(e -> {
crustList.getSelectionModel().selectedItemProperty().addListener((obs, oldValue,
crustValue) -> {
pizzaType.setText(crustValue);
});
});
VBox bottomBox = new VBox(20);
bottomBox.getChildren().addAll(orderButton, pizzaType);
BorderPane pane = new BorderPane();
pane.setTop(topBox);
pane.setCenter(bottomBox);
Scene scene = new Scene(pane, 500, 300);
primaryStage.setTitle("Pizza Order");
primaryStage.setScene(scene);
primaryStage.show();
}
仅在按钮上添加了动作监听器:
orderButton.setOnAction(e -> {
pizzaType.setText(processSelection());
});
如果将全部5个ListView
都设为类变量(字段),则可以如下定义processSelection()
:
private String processSelection() {
StringBuilder sb = new StringBuilder(" Selected:\n");
sb.append(" Crust: " ).append(crustList.getSelectionModel().getSelectedItem()).append("\n");
sb.append(" Cheese: " ).append(cheeseList.getSelectionModel().getSelectedItem()).append("\n");
sb.append(" Meat: " ).append(meatList.getSelectionModel().getSelectedItem()).append("\n");
sb.append(" Veg: " ).append(vegiList.getSelectionModel().getSelectedItem()).append("\n");
sb.append(" Sauce: " ).append(sauceList.getSelectionModel().getSelectedItem()).append("\n");
return sb.toString();
}