首页 > 其他分享 >如何将不同类型的Property绑定_使用绑定表达式

如何将不同类型的Property绑定_使用绑定表达式

时间:2023-06-23 10:00:19浏览次数:33  
标签:CheckBox 绑定 javafx textProperty import Property 表达式

如何将不同类型的Property绑定_使用绑定表达式

我们知道,相同的 Property 可以直接调用 bind 进行绑定。

而不同类型的 Property 则不能。

现在,我想令 textProperty 和 booleanProperty 进行绑定:

当 booleanProperty 为 true 或 false 时,同步修改 textProperty.

那么,有何方案?

使用绑定表达式可以作为一个解决方案。

效果展示

示例代码

import javafx.application.Application;
import javafx.beans.binding.Bindings;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.CheckBox;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class PropertyBindingExample extends Application {

    private Parent createContent() {
        VBox root = new VBox(10);

        CheckBox CheckBox = new CheckBox("CheckBox");
        Label label = new Label("Not checked");

        label.textProperty().bind(Bindings.when(CheckBox.selectedProperty()).then("Checked").otherwise("Not checked"));

        root.getChildren().addAll(CheckBox, label);

        return root;
    }

    @Override
    public void start(Stage primaryStage) throws Exception {
        primaryStage.setTitle(this.getClass().getSimpleName());
        primaryStage.setScene(new Scene(createContent(), 400, 300));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
    
}

代码说明

在这段代码中,我们使用下面一行代码完成了从 textProperty 到 booleanProperty 的绑定:

label.textProperty().bind(Bindings.when(CheckBox.selectedProperty()).then("Checked").otherwise("Not checked"));

label.textProperty().bind(...) 中,... 可以是一个绑定表达式。

表达式的内容是:

Bindings.when(CheckBox.selectedProperty()).then("Checked").otherwise("Not checked")

这段表达式的意思是,当 CheckBox.selectedProperty() 为 true 的时候,绑定到内容 Checked, 否则绑定到内容 Not checked.

标签:CheckBox,绑定,javafx,textProperty,import,Property,表达式
From: https://www.cnblogs.com/javafx-howto/p/17498759.html

相关文章

  • Vue(三):数据绑定(v-bind和v-model)
    数据绑定分为单向数据绑定和双向数据绑定,单向数据绑定就是前面学习的v-bind指令,而双向数据绑定则是下面学习的v-model指令。<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>数据绑定</title><scripttype="text/javascript&qu......
  • Android-Kotlin-函数表达式&String与int转换$异常处理
    Kotlin的函数表达式:packagecn.kotlin.kotlin_base03/***函数第一种写法*/funaddMethod1(number1:Int,number2:Int):Int{returnnumber1+number2}/***函数第二个种写法*/funaddMethod2(number1:Int,number2:Int)=number1+number2/***......
  • apache绑定于127.0.1.1
    Ubuntu下装Apache后,有时候,会绑定的地址为127.0.1.1。即提示信息:apache2:Couldnotreliablydeterminetheserver'sfullyqualifieddomainname,using127.0.1.1forServerName其实只要是127.开头的都一样,都是回环地址。你随便访问一个127.*都访问到的是本机。不过看起来......
  • 正则表达式几个匹配例子
    匹配手机号1.由1开头的数字^12.第二位数字一般是3,4,5,7,8中的一个数字[34578]3.接下来9位都是0到9的数字\d{9}4.为了严谨,结尾加上$,表示:是以9个数字结束^1[34578]\d{9}$在字符串中匹配多个:1[34578]\d{9}QQ号匹配:^[1-9]\d{5,11}$QQ号第一位:[1-9]QQ号一般5-12位,剩下的位数......
  • 正则表达式
    1.正则定义定义:文本模式;字母,数字或者是特殊字符组成的2.正则应用场景一般应用于注册等功能中的校验等需求3.正则用途检索或者替换符合某些规则的文本2.正则apiJava.Lang.StringJava.u......
  • 死信队列 - 死信交换机绑定配置【RabbitMQ】
    一、逻辑图二、死信交换机绑定配置1packagecn.itcast.mq.config;23importorg.springframework.amqp.core.*;4importorg.springframework.context.annotation.Bean;5importorg.springframework.context.annotation.Configuration;67importjava.util.H......
  • C 语言 GCC 内嵌函数实现 Lambda 表达式
    代码({//函数实现函数名称;})#include<stdio.h>#include<malloc.h>#defineaction_lambda(function_body)\({voidlambda_funcfunction_bodylambda_func;})#definefunc_lambda(return_type,function_body)\({return_typelambda_funcfunction_b......
  • WinUI ComboBox加载时不能正常显示绑定属性
    搞WINUI时发现下述问题:ComboBox的item1绑定了一个属性,但是程序在加载完成后,页面上并不能正常显示(已经设置了默认选择为ComboBox绑定属性那个item,但是就不正常);而TextBlock绑定相同的属性,是能正常显示的。 具体现象如下,左红色框中为TextBlock,右蓝色框中为ComboBox。 其xam......
  • UE5 C++ UPROPERTY宏
    属性声明UPROPERTY([specifier,specifier,...],[meta(key=value,key=value,...)])TypeVariableName;属性说明符声明属性时,属性说明符可被添加到声明,以控制属性与引擎和编辑器诸多方面的相处方式常用说明符VisibleDefaultsOnly//仅在ClassDefaults可见UP......
  • JavaScript(05): 正则表达式
    当检索某个文本的时候,我们可能需要一种模式来描述被检索的内容,在这种情况下就可以考虑使用正则表达式。正则表达式可以定义一种模式,这种模式可能是一个简单的字符、也可能是一个非常复杂的字符串,通常被用于解析、格式检查、替换等。关于正则表达式的具体内容可以参考以下链接,本文只......