2016-07-04 41 views
0

有一种将ObjectProperty<Integer>转换为IntegerProperty的方法。那就是:如何将ObjectProperty <String>转换为JavaFX中的StringProperty?

https://docs.oracle.com/javase/8/javafx/api/javafx/beans/property/IntegerProperty.html#integerProperty-javafx.beans.property.Property-

为什么没有到ObjectProperty<String>转换为StringProperty类似的方法?如何转换呢?

+1

为什么你需要这样做? 'StringProperty'和'ObjectProperty '都实现'Property ',它通常足够具体。 'IntegerProperty'等问题是他们实现了'Property '而不是'Property ','Property '等。另见http://stackoverflow.com/questions/34620552/why-does-longproperty-implement -propertynumber-but-not-propertylong and https://bugs.openjdk.java.net/browse/JDK-8125218 – Itai

回答

0

Looking at the source for integerProperty,它所做的只是一个双向绑定(并在完成中解除绑定)。

你可以复制的内容integerProperty呢,并将其修改为使用StringProperty

public static StringProperty makeStringProperty(final Property<String> property) { 
    Objects.requireNonNull(property, "Property cannot be null"); 

    return new StringPropertyBase() { 
     { 
      bindBidirectional(property); 
     } 

     @Override 
     public Object getBean() { 
      return null; // Virtual property, no bean 
     } 

     @Override 
     public String getName() { 
      return property.getName(); 
     } 

     @Override 
     protected void finalize() throws Throwable { 
      try { 
       unbindBidirectional(property); 
      } finally { 
       super.finalize(); 
      } 
     } 
    }; 
} 

我有点此处修改它,所以它不使用内部包。

相关问题