当前位置: 首页 > 知识库问答 >
问题:

JavaFX属性侦听器排序

尤研
2023-03-14

如果我向JavaFx属性添加onChange侦听器,

  1. 监听器是按顺序调用的吗?如果我有一个字符串属性,然后我把字符串转到“爱丽丝”,然后转到“鲍勃”,我保证在看到“鲍勃”之前看到“爱丽丝”吗?事实上,我不在乎我是否看到“爱丽丝”,只要我看不到“鲍勃”之后
  2. 监听器是按顺序调用的吗?我的监听器有可能同时被“爱丽丝”和“鲍勃”通知调用吗?

共有1个答案

赵俊远
2023-03-14

注意:你的问题不清楚——你似乎在问观察事件的顺序,而不是调用侦听器的顺序(在你的示例中只有一个侦听器)。我来回答事件排序部分。

长话短说:FX属性不是线程安全的。只要您在FX线程内处理该属性,事件就会按顺序触发,但如果您从其他线程访问该属性,则线程安全的一般规则适用。

换句话说:

>

  • 如果仅在FX线程上访问该属性(控件的属性会因用户交互而更改),包括注册侦听器时,或者如果以编程方式设置该属性的值,则事件将在FX线程上触发,并按顺序显示。因此,如果用户输入Alice然后Bob,你的听众将收到Alice然后Bob
  • 如果手动创建属性或更新控件的属性,但在没有正确同步的情况下开始使用线程,则所有赌注都将被取消。特别是,如果你写:

    • 属性。线程A中的addListener(myListener)
    • 属性。在线程B中设置(“Alice”)
    • 属性。在线程C中设置(“Bob”)

    你的听众可能看不到“爱丽丝”,也可能看不到“鲍勃”。它可能真的看到“爱丽丝”而不是“鲍勃”,也可能看到“鲍勃”而不是“爱丽丝”。

  •  类似资料:
    • 问题内容: 我当时在上网,但找不到很好的信息。我试图在每次运行应用程序时检测按键。我正在使用JavaFX并将其与FXML一起运行。我尝试了很多事情,但没有任何效果。请帮我。 问题答案: 您应该签出Ensemble示例。这是关键的侦听器代码。

    • 问题说明:

    • 问题内容: 有人知道在python中跟踪字典对象更改的任何简便方法吗?我的工作水平很高,所以我有一些方法可以处理更改字典的操作,如果字典发生更改,我想调用一个函数来基本上执行Observer / Notify。 我要避免的是所有跟踪(设置布尔值)代码。希望有一种更轻松的方式来跟踪更改。这是一个简单的情况,但是可能存在更复杂的逻辑,这将导致我不得不设置更改的标志。 问题答案: 您可以从该类派生并在任

    • 问题内容: 我有这个代码 尽管我仍未使用userdata,但事实是,每当我单击切换按钮时,我都会获得升序的所需输出。 这是输出: 在第一次单击中,我什么也没得到。 从第二次单击开始,我开始获得这种输出。谁能解释这种行为并为我提供解决方案? 问题答案: 该方法中的所有代码都应转到控制器的方法中。 现在,在第一个切换上单击,为设置数据,然后将它们放入组中,然后在上设置侦听器。因此,仅在第二次切换单击时

    • 我需要一些帮助。我有一个s的。 我想检查值是否发生了变化。如果是,我想知道它是哪个文本字段。我知道我可以使用侦听器来执行此操作,但这只适用于单个侦听器。 我希望它在数组上工作并确定哪个文本字段已更改。 提前感谢!

    • 我的需求是,当服务器在spring Boot中启动时,我需要初始化一些应用程序资源。为了初始化这些资源,我需要一些属性。因此,我将这些属性保存在外部属性文件中,并试图在Spring Boot启动时读取自定义侦听器中的属性。问题是,我无法在侦听器中获得任何属性值。我能够阅读后,申请开始没有任何问题。但是,当应用程序启动时,我需要它们在监听器内。我正在了解下面的异常...如何解决它。帮帮我! conf