2015-01-28 6 views
6

JavaFX와 관련하여 어떤 속성이 변경되면 "유효하지 않은"속성입니까? 나는이 용어를 사용하는 이유를 이해하지 못한다.JavaFX - 속성의 의미가 "무효"

JavaFX 속성은 관찰 가능하고 필드 값을 래핑하는 객체입니다. 따라서 건물 소유자/관람자는 재산이 갱신되거나 이 무효가되면 통고를받습니다. 그게 무슨 소리 야?

+1

다음은 [변경 대 무효화에 관한 블로그]입니다 (http : //blog.netopyr.JavaFX 2 속성 및 바인딩 구현의 과거 수석 개발자가 변경 목록 (예 : com/2012/02/08/when-to-use-a-changelistener-or-an-invalidationlistener /) – jewelsea

답변

0

모든 게으른 평가입니다. Devoxx 2011 컨퍼런스의이 video은이 개념을 이해하는 데 많은 도움이되었습니다.

흥미로운 내용은 ~ 5시에 시작됩니다.

+0

링크가 추락했습니다. 업데이트하십시오. – UnKnown

+0

@UnKnown 죄송합니다. 더 이상 비디오를 찾을 수 없습니다. – Spotted

+0

@ Spootted 문제가 없습니다. 나는 또한이 질문에 대한 답변을 추가하여 원한다면 알려주고 내가 틀렸다면 알려주십시오. 감사. – UnKnown

3

여기에서 좋은 설명을 발견했습니다. intProperty.set (7168)가 호출

enter image description here

, 그것은 otherProperty에 무효화 이벤트 을 발생합니다. 이 무효화 이벤트를 수신하면 otherProperty는 단순히 해당 값이 유효 기간보다 길지 만 기록합니다. 값에 대해 intProperty를 쿼리하여 해당 값의 값을 즉시 다시 계산하지 않습니다. otherProperty.get()이 호출 될 때 나중에 수행되는 재 계산은 입니다. 위 코드 에서처럼 intProperty.set()을 한 번만 호출하여 을 호출하는 경우 intProperty.set()를 여러 번 호출하는 경우를 상상해보십시오. otherProperty는 여전히 값을 한 번만 다시 계산합니다.

테스트 후이 예제를 발견했습니다.

IntegerProperty [value: 10] 

이제 주석 처리 된 줄에서 주석을 제거 :

import javafx.beans.property.IntegerProperty; 
import javafx.beans.property.SimpleIntegerProperty; 

public class InvalidMean{ 
    public static void main(String[] args){ 
     IntegerProperty num1 = new SimpleIntegerProperty(15); 
     IntegerProperty num2 = new SimpleIntegerProperty(10); 
     // num2.bind(num1); 
     // num1.set(56); 
     System.out.println(num2); 
    } 
} 

실행이 코드이 출력을 얻을 것이다. 그리고 당신은이 산출물을 얻을 것입니다. 새 값이 도착하지만 아직 업데이트되지 때문에

IntegerProperty [bound, invalid] 

num2의 값은 무효가됩니다. JavaFX Doc은 게으른 평가 때문에 설명합니다.

자바 FX 결합 및 속성 구현 모든 변경이 발생하면 값이 즉시 재 계산 없다는 것을 의미 지연 평가를 지원한다. 나중에 값을 요청할 경우 재 계산이 나중에 발생합니다.

당신이 값이이 속성은 다음 유효합니다 볼 수 System.out.println(num2);하기 전에 유효한 전화 num2.getValue(); 또는 num2.get();해야합니다.

참고 : 바인드 이미도 값을 변경하려고 num2set()의 값을 변경하기 때문에 위의 예에서 num2.bind(num1);num1.set(56); 모두 num2의 유효하지 않은 값을 만들 것입니다.