Empfohlene Methode zum einschränken des Eingangs in die JavaFX-textfield

Mag es scheinen, die Frage ist das doppelte von diese. Aber meine Frage ist ich entwickelt haben, die ein integer textfield-Objekt in JavaFX von zwei Möglichkeiten. Der code ist unten angegeben

public class FXNDigitsField extends TextField
{
private long m_digit;
public FXNDigitsField()
{
    super();
}
public FXNDigitsField(long number)
{
    super();
    this.m_digit = number;
    onInitialization();
}

private void onInitialization()
{
    setText(Long.toString(this.m_digit));
}

@Override
public void replaceText(int startIndex, int endIndex, String text)
{
    if (text.matches(Constants.DIGITS_PATTERN) || text.equals(Constants.EMPTY_STRING)) {
        super.replaceText(startIndex, endIndex, text);
    }
}

@Override
public void replaceSelection(String text)
{
    if (text.matches(Constants.DIGITS_PATTERN) || text.equals(Constants.EMPTY_STRING)) {
        super.replaceSelection(text);
    }
}
}

Und der zweite Weg ist, indem ein event-Filter.

Den code-snippet gegeben wird.

 //restrict key input to numerals.
this.addEventFilter(KeyEvent.KEY_TYPED, new EventHandler<KeyEvent>() {
  @Override public void handle(KeyEvent keyEvent) {
    if (!"0123456789".contains(keyEvent.getCharacter())) {
      keyEvent.consume();
    }
  }
});

Meine Frage ist was ist der verleumdet Weg, dies zu tun? Kann mir jemand helfen, pick-up die richtige?

InformationsquelleAutor Nikhil | 2013-03-25
Schreibe einen Kommentar