我在GridPane中有一个TextField,我只想让它将用户输入的内容读入Integer
,我将用它进行多次(非双重)计算。
TextField userInput = new TextField();
userInput.textProperty().addListener((ObservableValue<? extends String> observable, String oldValue, String newValue) -> {
if (!newValue.matches("\\d*")) {
userInput.setText(newValue.replaceAll("[^\\d]", ""));
}
});
sortButton.setOnMousePressed( e -> {
int savedValue = Integer.parseInt(userInput);
int outputMath = savedValue * 3;
int outputExpo = savedValue * 10;
int outputQuad = savedValue * 4;
});
听众可以很好地确保除了数字之外什么都没有被接受,但这些数字被读作一个我似乎无法用于计算的字符串。
问题孩子是Integer.parseInt(userInput)似乎没有在这里做的伎俩。有什么建议吗?
答案 0 :(得分:1)
On this line:
int savedValue = Integer.parseInt(userInput);
what you are actually doing is to try to parse the variable userInput
which is a TextField.
You should parse the content of the textProperty
of the TextField
instead:
int savedValue = Integer.parseInt(userInput.getText());