在 Java/JavaFX 中向变量添加监听器,该监听器在变量更改时被调用

2024-01-31

我知道JavaFX中有侦听器,并且我确定Java。但我对如何实施它们感到困惑。

我有一个布尔变量,它在我的程序中不断变化。每次更改布尔值时,我都希望运行一个函数 myFunc() 。

这很容易做到吗?


如果您使用 JavaFX 2,那么它为 JavaBeans 组件架构和观察者设计模式提供了开箱即用的解决方案。此外,它提供了通过属性绑定关联变量状态的极大灵活性。下面的代码说明了属性更改事件和属性变量的绑定。当然,您可以包装属性访问器以隐藏详细信息,例如getFlag() and setFlag()下面,并在应用程序的其余部分中使用它们。

public class Demo extends Application {

    private BooleanProperty booleanProperty = new SimpleBooleanProperty(true);

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

    @Override
    public void start(Stage primaryStage) {

        // Add change listener
        booleanProperty.addListener(new ChangeListener<Boolean>() {

            @Override
            public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
                System.out.println("changed " + oldValue + "->" + newValue);
                myFunc();
            }
        });

        Button btn = new Button();
        btn.setText("Toggle boolean flag");
        btn.setOnAction(new EventHandler<ActionEvent>() {

            @Override
            public void handle(ActionEvent event) {
                booleanProperty.set(!booleanProperty.get()); //toggle
                System.out.println("toggled to " + booleanProperty.get());
            }
        });

        // Bind to another property variable
        btn.underlineProperty().bind(booleanProperty);

        StackPane root = new StackPane();
        root.getChildren().add(btn);
        primaryStage.setScene(new Scene(root, 300, 250));
        primaryStage.show();
    }

    public boolean getFlag() {
        return booleanProperty.get();
    }

    public void setFlag(boolean val) {
        booleanProperty.set(val);
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Java/JavaFX 中向变量添加监听器,该监听器在变量更改时被调用 的相关文章

随机推荐

  • Go viper .yaml 值环境变量覆盖

    我正在努力拥有application yamlgo 应用程序中的文件包含 RMQ HOST 我想用环境变量覆盖的值 In application yaml我有 rmq test host RMQ HOST port RMQ PORT 在我的
  • 更改用户登录名后认证错误

    我们有一位最近更改了姓名的用户 假设旧用户名是 old name 新用户名是 new name 在 AD 中编辑详细信息并使用新用户名注销 登录后 我们的 ASP NET 应用程序显示旧名称 纯 ASP NET 无 MVC 使用 Windo
  • 如何在 obj-C 的 C 函数中向自己发送消息?

    我有一个 C 函数 音频队列服务中的回调函数 我想向自己发送消息 怎么做 如果我输入 self message 则会出现错误 Use of undeclared identifier self 您不会在实时回调中执行 objc 消息 例如音
  • Guzzle HTTP 请求从 POST 转换为 GET

    当我尝试向外部 API 发布帖子时 发生了一件非常奇怪的事情 我尝试向 URL 发出 POST 请求 但 Guzzle 发出 GET 请求 这是对此 API 的合法操作 但返回不同的内容 这是代码 request this gt clien
  • 在 ember 中如何在 Ember.Object.extend 上创建一个可以访问 json 服务的类方法

    很抱歉问这样一个简单的问题 但我正在考虑从 jQuery 迁移到 Ember 并试图在不使用 ember data 的情况下找出调用 响应 json 我的一个问题是人们如何建议使用类方法 举例来说 我有一个像这样的帖子对象 Hex Post
  • ARM ELF 对象内的函数大小不正确

    readelf 目标文件的输出 Symbol table symtab contains 15 entries Num Value Size Type Bind Vis Ndx Name 0 00000000 0 NOTYPE LOCAL
  • 通过CSS改变PNG图像的颜色?

    给定一个显示白色简单形状的透明 PNG 是否有可能通过 CSS 以某种方式改变它的颜色 某种覆盖或什么不是 您可以使用过滤器 webkit filter and filter 过滤器对于浏览器来说相对较新 但根据以下 CanIUse 表 超
  • java.net.URLEncoder.encode(String) 已弃用,我应该使用什么代替?

    我在使用时收到以下警告java net URLEncoder encode warning deprecation encode java lang String in java net URLEncoder has been deprec
  • 有条件地将列设置为 Postgres 中的默认值

    我有一个 PostgreSQL 8 4 表 其中有一个自动递增但可为空的整数列 我想更新一些列值 如果该列为 NULL 则将其设置为其默认值 这将是从序列自动生成的整数 but无论哪种情况我都想返回它的值 所以我想要这样的东西 UPDATE
  • 使用 ruby​​ 将存储为有符号的无符号整数转换回原始值

    C 程序将它认为是 64 位无符号整数放入 Postgres 数据库中类型为 int8 的列中 对于 Postgres int8 始终是 signed int8 没有 unsigned int8 这样的东西 因此 我的 Ruby 程序将从
  • Codeigniter 和 PHPWord

    我正在尝试阅读一些文件 所以我使用PHPWord 这是我在图书馆里得到的
  • Swift 2 为协议添加了协议一致性

    我可以通过 swift 扩展向协议添加协议一致性吗 Plain old protocol here protocol MyData var myDataID Int get 我想做MyData协议默认相等 只需比较ID extension
  • 让 Json.NET + MongoDB Bson 协同工作

    我正在尝试将一些 Json NET json 序列化与 MongoDB 结合起来 我有一个与此类似的结构 public class Master props public Detail Details get set public clas
  • 黄油刀不会注射

    我正在尝试使用牛油刀 http jakewharton github io butterknife 这些天我在 Android Studio 工作 但它因一些奇怪的问题而让我失望 我曾经在 eclipse 上尝试过 Butter Knife
  • 关闭 Java 8 流

    如果我们像这样使用 Java 8 Streamlist stream filter collect 这个流什么时候关闭 作为下一个示例 我们关闭流是一种好的做法吗 Stream
  • 玩!框架 2 Android 客户端的 REST 身份验证和授权

    我目前正在开发一个具有网页版本 Play Framework 2 2 x 和 Android 客户端的应用程序 因为玩 完全 RESTful 我想在 Play 之间进行通信 以及带有 JSON 请求和响应的 Android 该应用程序的 W
  • 如何从当前文件夹外部导入模块?

    我正在尝试从其目录外部导入模块a py 该目录看起来像这样 project folder 1 a py folder 2 init py b py 我的代码在a py中 contents of a py from folder 2 impo
  • angularjs 路线 - 跳转到路线链接上的特定页面部分

    我正在尝试在 Angular 锚点和路由之间进行某种混合 我确实可以在主页中使用它 因为锚点部分在那里 但是 如果我在另一个页面中 它就不会 谁能指出我正确的方向 如何正确地做到这一点 这是我到目前为止所拥有的 freddoApp conf
  • 在电子邮件中嵌入标识符

    我正在尝试将 ID 嵌入到电子邮件中 以便当收件人回复我的系统发出的电子邮件时 我的系统可以拾取它并将两者匹配在一起 我尝试附加自定义标头 但是当用户回复时 该标头会被删除 我尝试在电子邮件中嵌入 HTML 评论 但 Outlook 在创建
  • 在 Java/JavaFX 中向变量添加监听器,该监听器在变量更改时被调用

    我知道JavaFX中有侦听器 并且我确定Java 但我对如何实施它们感到困惑 我有一个布尔变量 它在我的程序中不断变化 每次更改布尔值时 我都希望运行一个函数 myFunc 这很容易做到吗 如果您使用 JavaFX 2 那么它为 JavaB