所以我有这个用JavaFX制作的购物篮应用程序。我想要做的是当我清理购物篮从新鲜开始我可以清除我的表视图,因为我可以信任将表数据设置为空,但我正在努力清除我的文本字段,因为我不知道如何访问它们。
这是我的BasketOverviewController中的TextFields
@FXML
public TextField noItemsField;
@FXML
public TextField totalField;
以下是更新文本字段的两种方法。
public void getTotalItems() {
int total = 0;
ArrayList<Items> itemList = new ArrayList<>(MainApp.itemData);
for (Items item : itemList) {
total += item.getQuantity();
}
noItemsField.setText(total + "");
}
public void getTotalPrice() {
double total = 0;
ArrayList<Items> itemList = new ArrayList<>(MainApp.itemData);
for (Items item : itemList) {
total += item.getTotal();
}
totalField.setText("£" + df.format(total));
// returns the total of each item through for loop
}
所以说如果我点击新的或在我的购物篮中打开一个新的XML文档,这两个文本字段不会更新,除非我调用这两个方法时再做一个动作,然后调用BasketOverviewController。我想知道在RootLayoutController中是否有任何东西可以调用它们,或者当它设置为0时将它们设置为0.这是我的RootLayoutController中用于创建新文件或打开XML文档的代码。
RootLayoutController
@FXML
private void handleNew() {
mainApp.getItemData().clear();
mainApp.setItemFilePath(null);
}
@FXML
private void handleOpen() {
FileChooser fileChooser = new FileChooser();
// Set extension filter
FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter(
"XML files (*.xml)", "*.xml");
fileChooser.getExtensionFilters().add(extFilter);
// Show save file dialog
File file = fileChooser.showOpenDialog(mainApp.getPrimaryStage());
if (file != null) {
mainApp.loadItemDataFromFile(file);
}
}
所以基本上我有一个BasketOverviewController,其中包含我需要在制作新的XML文档时更改的textFields,因为这是购物篮创建的文件类型,当我打开XML文档时,我需要Total text字段来更新和要更新的No.Items。现在我尝试创建一个对我的BasketOverView控制器的引用并尝试编辑文本字段,但我总是得到一个NullPointerException。