javafx
गुण और अवलोकनीय
खोज…
टिप्पणियों
गुण अवलोकनीय हैं और श्रोताओं को उनके साथ जोड़ा जा सकता है। वे लगातार Node
एस के गुणों के लिए उपयोग किए जाते हैं।
गुणों के प्रकार और नामकरण
मानक गुण
संपत्ति के प्रकार के आधार पर, एकल संपत्ति के लिए 3 तरीके हैं। मान लें <property>
एक संपत्ति के नाम को निरूपित करते हैं और <Property>
एक बड़े अक्षर के साथ संपत्ति का नाम। और T
को संपत्ति का प्रकार होने दो; आदिम रैपर के लिए हम यहाँ आदिम प्रकार का उपयोग करें, जैसे String
के लिए StringProperty
और double
के लिए ReadOnlyDoubleProperty
।
विधि का नाम | पैरामीटर | वापसी प्रकार | उद्देश्य |
---|---|---|---|
<property>Property | () | संपत्ति ही, उदाहरण के लिए DoubleProperty , ReadOnlyStringProperty , ObjectProperty<VPos> | श्रोताओं / बंधन को जोड़ने के लिए संपत्ति को स्वयं वापस करें |
get<Property> | () | T | संपत्ति में लिपटे मूल्य को वापस करें |
set<Property> | (T) | void | संपत्ति का मूल्य निर्धारित करें |
ध्यान दें कि सेटर आसानी से मौजूद गुणों के लिए मौजूद नहीं है।
गुणों की सूची पढ़ें
Readonly सूची गुण ऐसे गुण हैं जो केवल एक गेटर विधि प्रदान करते हैं। इस तरह के एक संपत्ति के प्रकार है ObservableList
, अधिमानतः निर्दिष्ट एक प्रकार agrument साथ। इस संपत्ति का मूल्य कभी नहीं बदलता है; ObservableList
की सामग्री को बदले जा सकता है।
आसानी से नक्शा गुण
आसानी से सूची गुणों को पढ़ने के लिए समान रूप से नक्शा गुणों के समान केवल एक गटर प्रदान करते हैं और संपत्ति के मूल्य के बजाय सामग्री को संशोधित किया जा सकता है। ObservableMap
एक ObservableMap
लौटाता है।
StringProperty उदाहरण
निम्न उदाहरण एक संपत्ति की घोषणा (इस मामले में StringProperty
) को दर्शाता है और यह दर्शाता है कि ChangeListener
एक 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 उदाहरण
इस उदाहरण से पता चलता है कि एक संपत्ति बनाने के लिए एक आसानी से आवरण संपत्ति का उपयोग कैसे किया जा सकता है जिसे लिखा नहीं जा सकता है। इस मामले में cost
और price
को संशोधित किया जा सकता है, लेकिन 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);
}
}