2013-01-14 3 views
0

내 인쇄 메소드를 xProperty() (print().bind(scene.xProperty());)에 바인드하려고합니다. 한 번 실행되지만 xProperty가 호출 될 때 메서드가 다시 호출되지 않습니다. 한 번 이상 전화를 걸려면 어떻게해야합니까?바인드가 컴파일되지만 호출되지 않습니다.

public DoubleProperty print(){ 
    System.out.println("print"); 
    DoubleProperty dp = new DoubleProperty(){ 
     public void removeListener(ChangeListener cl){} 
     public void removeListener(InvalidationListener cl){} 
     public void addListener(ChangeListener cl){} 
     public void addListener(InvalidationListener cl){} 
     public double get(){return 10;} 
     public String getName(){return "";} 
     public Object getBean(){return new Object();} 
     public boolean isBound(){return true;} 
     public void unbind(){} 
     public void bind(ObservableValue observable){} 
     public void set(double d){} 
    }; 
    return dp; 

} 
+0

목표는 무엇입니까? 장면 x 값이 변할 때마다 메서드를 호출하고 싶습니까? – invariant

+0

수정하십시오. 나는 변화 청취자와 함께 그것을하는 방법을 이해했다. 대신 bind를 사용하고 싶습니다. \t 공개도 (벡터 v, 장면 s) { \t \t super(); \t \t this.v = v; \t \t s.widthProperty().의 addListener (새의 ChangeListener () { \t \t \t 공개 무효가 (ObservableValue)이 OV, \t \t \t 번호 old_val, 수 new_val 을 변경 { \t \t \t \t 연신(); \t \t \t} \t \t}); \t} – user1958884

답변

0

나는이 같은 SimpleDoubleProperty를 사용하는 것이 좋습니다 것입니다 당신이 찾고있는 것이 아니라 처음부터 자신의 DoubleProperty를 구현하는 (귀하의 구현 예를 들어, 청취자의 적절한 취급이 없습니다) 정확히 모르겠습니다 베이스. 예를 들어

:

public class Bean { 
    private DoubleProperty print; 
    public DoubleProperty printProperty(){ 
     if (print == null) 
      print = new SimpleDoubleProperty(this, "print"); 
     return print; 
    } 
} 

지금, 당신은 인쇄 속성에 바인딩 할 수 있습니다뿐만 아니라 그것에 당신의 자신의 청취자를 등록합니다.

+0

답장을 보내 주셔서 감사합니다. 그러나 구현 방법을 모르므로 메소드가 호출됩니다. 내가 게시 한 예가 잘못된 것 같습니다. 나는 부모 장면의 크기가 변경 될 때 Canvas에서 GraphicsContext2D를 그릴 때 사용하는 모든 메서드를 호출 할 수 있기를 원합니다. – user1958884

관련 문제