我们如何一起使用combobox和listview?

时间:2016-10-18 22:06:49

标签: user-interface javafx

我们有一个listview,用于监听组合框所做的选择。但是,当尝试使用该组合框在列表视图显示的可观察列表之间切换时,我们会收到错误。

eclipse错误:在封闭范围内定义的局部变量inventoryItems必须是最终的或有效的最终

eclipse错误:在封闭范围内定义的局部变量inventoryPrices必须是最终的或有效的最终

public static void GUI(Stage primaryStage){

ComboBox itemList = new ComboBox(FXCollections.observableArrayList(
   "Menu Items", "Drink Items", "Dessert Items","Gift Shop Items")
);

ListView<String> inventory = new ListView<String>();
ListView<String> inventoryP = new ListView<String>();

ObservableList<String> inventoryItems;
ObservableList<String> inventoryPrices;

// Listener for inventory. When item in inventory is selected, the corresponding price is also selected

itemList.setOnAction(e -> {

if (itemList.getSelectionModel().getSelectedItem().toString() == "Menu Items") {

inventoryItems =FXCollections.observableArrayList (Register.menuItemNames);
inventory.setItems(inventoryItems);

inventoryPrices =FXCollections.observableArrayList(Register.menuItemPrices);
inventoryP.setItems(inventoryPrices);
}
else if (itemList.getSelectionModel().getSelectedItem().toString() == "Drink Items") {

inventoryItems =FXCollections.observableArrayList (Register.drinkItemNames);
inventory.setItems(inventoryItems);

inventoryPrices =FXCollections.observableArrayList (Register.drinkItemPrices);
inventoryP.setItems(inventoryPrices);
}
});

1 个答案:

答案 0 :(得分:0)

错误消息已经告诉您问题所在。来自匿名内部类或lambda表达式中访问的封闭范围的任何局部变量只能赋值一次。

在这里,我不明白为什么你需要在lambda表达式之外声明列表:

compile 'com.android.support:appcompat-v7:24.0.0'

compile 'com.android.support:design:24.0.0'

compile 'com.android.support:support-v4:24.0.0'

另请注意,我修正了您对comparing strings的错误。