package com.imyeyu.fx; import javafx.beans.binding.Bindings; import javafx.beans.binding.BooleanBinding; import javafx.beans.binding.StringBinding; import javafx.beans.property.DoubleProperty; import javafx.beans.value.ObservableValue; import com.imyeyu.utils.Calc; import javafx.scene.control.SplitPane; import java.util.Arrays; /** * @author 夜雨 * @version 2024-04-13 13:46 */ public final class BindingUtils { /** * 多个布尔值绑定属性与运算 * * @param values 布尔值绑定 * @return 与运算绑定 */ @SafeVarargs public static BooleanBinding and(ObservableValue...values) { return Bindings.createBooleanBinding(()-> Arrays.stream(values).allMatch(ObservableValue::getValue), values); } /** * 多个布尔值绑定属性或运算 * * @param values 布尔值绑定 * @return 或运算绑定 */ @SafeVarargs public static BooleanBinding or(ObservableValue...values) { return Bindings.createBooleanBinding(()-> Arrays.stream(values).anyMatch(ObservableValue::getValue), values); } /** * 双精度转整型字符串绑定属性 * * @param property 双精度浮点型属性 * @return 字符串绑定属性 */ public static StringBinding integerStringBinding(DoubleProperty property) { return Bindings.createStringBinding(() -> String.valueOf(Calc.round(property.get())), property); } }