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)
从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属性并修改该侦听器中的文本时获得的子类化和重复更改事件.