수색…


비고

속성을 관찰 할 수 있으며 리스너를 추가 할 수 있습니다. 그것들은 Node 의 속성에 대해 일관되게 사용됩니다.

특성 및 명명 유형

표준 속성

속성의 유형에 따라 단일 속성에 대해 최대 3 개의 메서드가 있습니다. <property><property> 의 이름을 나타내고 <Property> 는 첫 번째 문자가 대문자 인 속성의 이름을 나타냅니다. 그리고 T 부동산의 유형이라고합시다. 기본 래퍼의 경우 여기에 기본 유형을 사용합니다. 예를 들어 StringStringProperty 이고 doubleReadOnlyDoubleProperty 입니다.

메서드 이름 매개 변수 반환 유형 목적
<property>Property () 재산 자체, 예.
DoubleProperty , ReadOnlyStringProperty , ObjectProperty<VPos>
리스너 / 바인딩을 추가하기 위해 속성 자체를 반환합니다.
get<Property> () T 속성에 래핑 된 값을 반환합니다.
set<Property> (T) void 속성의 값을 설정한다.

읽기 전용 속성의 경우 setter가 존재하지 않습니다.

읽기 전용 목록 속성

읽기 전용 목록 속성은 getter 메서드 만 제공하는 속성입니다. 그러한 속성의 유형은 ObservableList 이며, 바람직하게는 유형 악기가 지정된 상태 여야합니다. 이 속성의 값은 변경되지 않습니다. ObservableList 의 내용이 대신 변경 될 수 있습니다.

읽기 전용 맵 속성

읽기 전용 목록 속성과 마찬가지로 읽기 전용 맵 속성은 getter 만 제공하며 속성 값 대신 속성을 수정할 수 있습니다. getter는 ObservableMap 반환합니다.

StringProperty 예제

다음 예제에서는 속성 (이 경우 StringProperty 의 선언을 보여주고 ChangeListener 를 추가하는 방법을 보여줍니다.

import java.text.MessageFormat;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;

public class Person {

    private final StringProperty name = new SimpleStringProperty();

    public final String getName() {
        return this.name.get();
    }

    public final void setName(String value) {
        this.name.set(value);
    }

    public final StringProperty nameProperty() {
        return this.name;
    }
    
    public static void main(String[] args) {
        Person person = new Person();
        person.nameProperty().addListener(new ChangeListener<String>() {

            @Override
            public void changed(ObservableValue<? extends String> observable, String oldValue, String newValue) {
                System.out.println(MessageFormat.format("The name changed from \"{0}\" to \"{1}\"", oldValue, newValue));
            }
            
        });
        
        person.setName("Anakin Skywalker");
        person.setName("Darth Vader");
    }
    
}

ReadOnlyIntegerProperty 예제

이 예는 읽기 전용 랩퍼 특성을 사용하여 쓸 수없는 특성을 작성하는 f}을 보여줍니다. 이 경우 costprice 을 수정할 수 있지만 profit 은 항상 price - cost 됩니다.

import java.text.MessageFormat;
import javafx.beans.property.IntegerProperty;
import javafx.beans.property.ReadOnlyIntegerProperty;
import javafx.beans.property.ReadOnlyIntegerWrapper;
import javafx.beans.property.SimpleIntegerProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;

public class Product {
    
    private final IntegerProperty price = new SimpleIntegerProperty();
    private final IntegerProperty cost = new SimpleIntegerProperty();
    private final ReadOnlyIntegerWrapper profit = new ReadOnlyIntegerWrapper();

    public Product() {
        // the property itself can be written to
        profit.bind(price.subtract(cost));
    }

    public final int getCost() {
        return this.cost.get();
    }

    public final void setCost(int value) {
        this.cost.set(value);
    }

    public final IntegerProperty costProperty() {
        return this.cost;
    }

    public final int getPrice() {
        return this.price.get();
    }

    public final void setPrice(int value) {
        this.price.set(value);
    }

    public final IntegerProperty priceProperty() {
        return this.price;
    }

    public final int getProfit() {
        return this.profit.get();
    }

    public final ReadOnlyIntegerProperty profitProperty() {
        // return a readonly view of the property
        return this.profit.getReadOnlyProperty();
    }
    
    public static void main(String[] args) {
        Product product = new Product();
        product.profitProperty().addListener(new ChangeListener<Number>() {

            @Override
            public void changed(ObservableValue<? extends Number> observable, Number oldValue, Number newValue) {
                System.out.println(MessageFormat.format("The profit changed from {0}$ to {1}$", oldValue, newValue));
            }
        
        });
        product.setCost(40);
        product.setPrice(50);
        product.setCost(20);
        product.setPrice(30);
    }
    
}


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow