绑定:字符串处理、对象处理
concat(),format() 字符串拼接和格式化输出
System.out.println("=============concat();format()==============");
SimpleIntegerProperty value = new SimpleIntegerProperty(10);
StringExpression sexp = Bindings.concat("value = ", value.asString(Locale.getDefault(), "%s"));
System.out.println(sexp.get());
StringExpression sexp1 = Bindings.format("value = %s", value);
System.out.println(sexp1.get());
value.set(20);
System.out.println("==========value.set(20)==========");
System.out.println(sexp.get());
System.out.println(sexp1.get());
value = 10
value = 10
--------value.set(20)--------
value = 20
value = 20
max(),min() 最大值最小值
SimpleIntegerProperty x = new SimpleIntegerProperty(1);
SimpleIntegerProperty y = new SimpleIntegerProperty(2);
System.out.println("Bindings.max(x,y).intValue() = " + Bindings.max(x, y).intValue());
System.out.println("Bindings.min(x,y).intValue() = " + Bindings.min(x, y).intValue());
Bindings.max(x,y).intValue() = 2
Bindings.min(x,y).intValue() = 1
createStringBinding() 自定义字符串匹配规则
StringExpression sexp2 = Bindings.createStringBinding(() -> {
switch (value.get()) {
case 10:
return "Ten";
case 20:
return "Twenty";
default:
return "default";
}
}, value);
value.set(20);
// 调用上面匿名内部类中的方法
System.out.println("value.get() = " + value.get());
System.out.println("sexp2.get() = " + sexp2.get());
value.get() = 20
sexp2.get() = Twenty
selectString() 深层绑定JavaBean中某个属性
创建两层结构的JavaBean
public class Student { private SimpleStringProperty name = new SimpleStringProperty("张三"); private SimpleObjectProperty<School> school = new SimpleObjectProperty<>(new School()); public Student(String name) { this.name.set(name); } public String getName() { return name.get(); } public SimpleStringProperty nameProperty() { System.out.println("STUDENT"); return name; } public School getSchool() { return school.get(); } // 此方法名必须按照此格式 public SimpleObjectProperty<School> schoolProperty() { System.out.println("STUDENT"); return school; } public void setName(String name) { this.name.set(name); } public void setSchool(String name) { this.school.set(new School(name)); } } public class School { // 默认值 private SimpleStringProperty name = new SimpleStringProperty("哈佛大学"); public School(){ } public School(String name){ this.name.set(name); } public String getName() { return name.get(); } public SimpleStringProperty nameProperty() { System.out.println("SCHOOL"); return name; } }
// 嵌套一层的JavaBean Student student = new Student("张三"); SimpleObjectProperty<Student> studentProperty = new SimpleObjectProperty<>(student); // 可观察属性,外层JavaBean中的属性名称,内层JavaBean中的属性名称 // 绑定了student对象中的school属性中的name属性 StringExpression sexp3 = Bindings.selectString(studentProperty, "school", "name"); System.out.println("sexp3.get() = " + sexp3.get()); // 当school的name属性改变时,会触发sexp3值的改变 student.setSchool("清华大学"); System.out.println("sexp3.get() = " + sexp3.get());
STUDENT
SCHOOL
sexp3.get() = 哈佛大学
STUDENT
SCHOOL
sexp3.get() = 清华大学
convert() 字符串转换
System.out.println("Bindings.convert(new SimpleIntegerProperty(100)).get().getClass() = " + Bindings.convert(new SimpleIntegerProperty(100)).get().getClass());
Bindings.convert(new SimpleIntegerProperty(100)).get().getClass() = class java.lang.String