在TextField中用Text替换Text

Pet*_*zov 2 javafx javafx-2 javafx-8

我有这个字段,我插入端口号.我想将字符串自动转换为数字:

fieldNport = new TextField();
    fieldNport.setPrefSize(180, 24);
    fieldNport.setFont(Font.font("Tahoma", 11));
    grid.add(fieldNport, 1, 1);
Run Code Online (Sandbox Code Playgroud)

你能告诉我怎么做吗?我在堆栈溢出中找不到合适的例子.

编辑:

也许这个:

 fieldNport.textProperty().addListener(new ChangeListener()
        {
            @Override
            public void changed(ObservableValue o, Object oldVal, Object newVal)
            {
                try
                {
                    int Nport = Integer.parseInt((String) oldVal);
                }
                catch (NumberFormatException e)
                {

                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

Uwe*_*Uwe 5

从JavaFX 8u40开始,您可以在文本字段上设置TextFormatter对象:

UnaryOperator<Change> filter = change -> {
    String text = change.getText();

    if (text.matches("[0-9]*")) {
        return change;
    }

    return null;
};
TextFormatter<String> textFormatter = new TextFormatter<>(filter);
fieldNport = new TextField();
fieldNport.setTextFormatter(textFormatter);
Run Code Online (Sandbox Code Playgroud)

这样可以避免在将更改侦听器添加到text属性并修改该侦听器中的文本时获得的子类化和重复更改事件.