Files
timi-fx/src/main/java/com/imyeyu/fx/BindingUtils.java
2025-07-14 14:12:45 +08:00

52 lines
1.3 KiB
Java

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<Boolean>...values) {
return Bindings.createBooleanBinding(()-> Arrays.stream(values).allMatch(ObservableValue::getValue), values);
}
/**
* 多个布尔值绑定属性或运算
*
* @param values 布尔值绑定
* @return 或运算绑定
*/
@SafeVarargs
public static BooleanBinding or(ObservableValue<Boolean>...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);
}
}