【发布时间】:2017-09-22 17:14:41
【问题描述】:
我正在尝试制作一个 UI,它可以从通过按下按钮添加的文本字段中获取数字,添加数字,然后打印控制台。我已经想出了如何以无限数量添加文本字段,但我似乎无法从每个文本字段中获取所有数字并打印出总和。每当我将数字放入我的文本字段并按下“添加数字”按钮时,它只会返回最新添加的文本字段中的数字。这是我的代码:
public VBox pane;
@FXML
private Button addButton;
@FXML
private TextField field;
@FXML
private void addNewTextField(ActionEvent event) {
field = new TextField();
field.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
if (!newValue.matches("\\d*")) {
field.setText(newValue.replaceAll("[^\\d]", ""));
}
}
});
pane.getChildren().add(field);
}
@FXML
private void addNumbers(ActionEvent e) {
ArrayList<Integer> numList = new ArrayList<>();
try {
ArrayList<Integer> list = new ArrayList<>();
int result = Integer.parseInt(field.getText());
list.add(result);
int sum = 0;
for (int i : list) {
sum += result;
System.out.println("The sum of numbers is = " + sum);
}
} catch (NumberFormatException exception) {
exception.printStackTrace();
}
}
}
【问题讨论】:
-
将
field设为局部变量,而不是实例字段。 -
如果您的
Pane和TextFields 中只有TextFields,那么您需要使用Pane来检索TextFields。在您的addNumber(..)方法中使用pane.getChildren()。
标签: java user-interface arraylist javafx