2016-07-04 4 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-

StringPropertyObjectProperty<String>を変換する類似の方法がないのはなぜ?変換する方法は?

+1

なぜこれを行う必要がありますか? 'StringProperty'と' ObjectProperty 'はどちらも' Property 'を実装しています。 'IntegerProperty'などの問題は、' Property '、' Property 'などではなく' Property 'を実装していることです。http://stackoverflow.com/questions/34620552/why-does-longproperty-implement -propertynumber-but-not-propertylongおよび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(); 
      } 
     } 
    }; 
} 

それは内部のパッケージを使用していないので、私は少しここでそれを修正しました。

関連する問題