package net.demilich.metastone.tools; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.scene.control.TextField; public class IntegerListener implements ChangeListener<String> { private final ITextFieldAction action; public IntegerListener(ITextFieldAction action) { this.action = action; } @Override public void changed(ObservableValue<? extends String> observable, String oldText, String newText) { if (newText.matches("\\d*")) { int value = Integer.parseInt(newText); action.onChanged(value); } else { TextField textField = (TextField) observable; textField.setText(oldText); } } }