2017-09-09 2 views
1

Ich fand einzige Lösung, wie String zu IntegerProperty binden, etwa so:Wie bindet man StringProperty an ObjectProperty <Integer> in JavaFX?

StringProperty.bindBidirectional(IntegerProperty, new NumberStringConverter()); 

Aber ich brauche auch null Wert. Wie bindet man StringProperty to ObjectProperty<Integer>?

+0

@CloseVoter Könnten Sie den Grund erklären stimmen zu schließen? Wenn das eine dumme Frage ist, erkläre einfach, ich werde es selbst löschen, um die Gemeinschaft nicht zu stören. –

Antwort

3

Standard IntegerStringConverter verstehen nulls:

ObjectProperty<Integer> objP = new SimpleObjectProperty<>(); 
stringProp.bindBidirectional(objP, new IntegerStringConverter()); 

objP.setValue(null); // stringProp == "" 
stringProp.setValue(""); // objP == null 

Wenn Sie ein anderes Verhalten möchten, können Sie Ihren eigenen Konverter machen:

ObjectProperty<Integer> objP = new SimpleObjectProperty<>(); 
    stringProperty.bindBidirectional(objP, new StringConverter<Integer>() { 
     @Override 
     public String toString(Integer number) { 
      return number == null ? "NULL" : number.toString(); 
     } 

     @Override 
     public Integer fromString(String string) { 
      return string.equals("NULL") ? null : Integer.valueOf(string); 
     } 
    }); 

    // both works: 
    objP.setValue(null); 
    objP.setValue(100); 
+0

Sollte 'number.toString()' –

+0

richtig sein, danke. Ich habe es behoben. –

Verwandte Themen