将JavaFX TextField的内容转换为Integer

时间:2016-04-01 13:48:26

标签: java string javafx integer type-conversion

我在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)似乎没有在这里做的伎俩。有什么建议吗?

1 个答案:

答案 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());