问题标签 [propertychangesupport]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
332 浏览

android - 使用 PropertyChangeListener 与使用 LocalBroadcastReceivers 的优缺点是什么?

似乎属性更改侦听器比发送广播更好,因为您可以将对象传递回属性侦听器,而当您广播 Intent 时,它只能包含原语或 Parcelable 对象。但是,我不确定在属性更改侦听器中传递的对象在垃圾收集方面的效果如何,等等。任何人都可以提供一些关于两者使用的最佳实践的见解吗?

0 投票
2 回答
1286 浏览

java - 使用 PropertyChangeListener 接口是不是一个好方法?

我对fireIndexedPropertyChange()方法的深层含义和使用有疑问,该方法会触发一个事件,该事件将由我在另一个类中声明的propertyChange()侦听器拦截和处理。

例如,在使用 JButton 实现登录 GUI(显示登录表单)的类中,当用户单击我的按钮时,我会执行此方法:

因此,当尚未登录的用户单击我的按钮时,将执行此方法并触发新的PropertyChange事件。

我的PropertyChange事件本身包含以下信息:

  1. propertyName是可以更改的属性的名称(在我的示例中名为loginResult 因为我有一个名为loginResult的布尔变量,如果用户可以在单击按钮时登录,则值为 true,否则为 false

  2. 旧值是可以更改的属性的旧值(在我的示例中为 false,因为如果用户看到登录窗口,则意味着它没有登录并且loginResul=false

  3. :在这种情况下,它是loginResult变量的内容(如果用户正在系统中登录,则为 true)

因此,此PropertyChange事件将被我的propertyChange()方法(在侦听器类中声明)拦截,该方法根据这些参数处理它:例如以下列方式:

** 如果 propertyName 是 loginResult 并且如果新值为 true 则不再显示登录窗口,而是显示主应用程序窗口**

我的推理是否正确,它可能是使用PropertyChangeListener接口的好方法?

肿瘤坏死因子

安德烈亚

0 投票
1 回答
2521 浏览

java - 如果摆动 Jcombo 框中的旧值和新值相等,如何触发属性更改侦听器

组合框有两个值:ANDOR

我为 Combo 编写了属性更改侦听器,当且仅当当前选择的值和以前的值不同时,触发此事件。但是我需要即使值相同也应该触发此事件?

这是我的示例代码片段:

0 投票
2 回答
681 浏览

java - propertyChange Support 与 EventListenerList 的区别以及何时更喜欢它们?

我已阅读有关PropertyChange 支持EventListenerList的文档。list of listeners据我了解,两者在持有 a和发生notifying时都有相似的目的event/propertyChange。是否只有在 的情况下才会GUI applications变得EventListenerList方便?JavaBean对于不使用的简单应用程序,GUI components使用其中一个是否有优势。

0 投票
2 回答
499 浏览

java - 设计一个只监听某些属性的 PropertyChangeListener

我正在寻找与观察者模式相关的以下问题的设计模式/解决方案,我已经研究过。

在我的代码中,我有一MyModel堂课。它有很多属性。

所以实现的类IBusinessEntityListener可以注册到MyModel类。

然后我有 10 多个听众,他们只MyModel. 他们都实施IBusinessEntityListener。但是我怎样才能指定(例如使用 Java 泛型?)一些听众只感兴趣Flowers,一些只感兴趣Toys,等等?

那么如何设计这种支持监听某些属性的类结构呢?

无论如何,所有侦听器都会为操作添加更新删除实现 3 种方法。

0 投票
1 回答
522 浏览

java - Java:SwingPropertyChangeSupport

我正在尝试制作一个 MVC Java Swing 程序,该程序利用 SwingPropertyChangeSupport 在模型更新时通知视图。我遇到的问题是通知似乎没有发生。

我在下面准备了一个 SSCCE。在 SSCCE 中,有一个带有按钮和文本字段的 Swing GUI。当您单击按钮时,模型中的计数器会增加,并且视图应该会收到通知,以便它可以自行更新。但是,即使我已经检查以确保 oldValue 和 newValue 彼此不同,但似乎没有发送/接收通知(我不确定哪个 - 它可能是两者)。我将不胜感激任何帮助了解我哪里出错了。谢谢!

0 投票
1 回答
339 浏览

java - 从 JSON(Gson)反序列化时如何初始化 PropertyChangeSupport?

我的对象实现了PropertyChangeSupport,但是当我从 json 字符串反序列化时,变量propertyChangeSupport将是null,尽管我new PropertyChangeSupport(this)在默认构造函数中使用 a 自己初始化了值。如何使用 Gson 正确初始化或反序列化它?

假设我有这个对象:

我也试过new PropertyChangeSupport(this);直接把它放在开头,也不行。我有点想避免手动创建一个函数,例如initializePropertyChangeSupport()然后在反序列化后手动调用它,因为这有点难看。

我正在尝试做的事情:

这是我的 json 解析函数:

0 投票
1 回答
442 浏览

java - 添加元素时集合的属性更改事件的旧值

我有一个 Java bean,它有一个带有 getter 的集合属性,并且还为集合提供了添加方法。

因此,当使用该add方法修改集合时,我必须触发一个PropertyChangeEvent. APropertyChangeEvent有一个旧值和一个新值。

您如何处理旧值?

为了方便起见,我将String在这里使用 s 的集合。例如

获取旧值的一种方法可能是在添加之前创建一个副本

但在很多情况下,旧值可能会被白白复制。

所以另一个想法是不使用 add 方法,而是使用containsbefore

这适用于Set. 但是当names集合是 anArrayList时它将不起作用,因为 anArrayList可以包含多个相等对象的实例。socontains会返回 true,但 anadd也会返回true

在多线程环境中,首先通过包含检查然后添加也可能是一个问题,因为同时另一个线程可能已经添加了相同的对象。但我不想在这里介绍这种复杂性。我只想为单线程环境找到一个好的设计,通常是在 UI 中使用此类 bean 时(Event-Dispatch-Thread)。

在这种情况下,您如何处理旧值?

0 投票
1 回答
32 浏览

java - 添加 PropertyChangeListener 会导致 java.lang.NullPointerException

我是使用 Netbeans 和 PropertyChangeListeners 的新手,在 Java bean 中实现 PropertyChangeSupport 时,我遇到了同样的(对我来说)奇怪的行为。

所以我有一个名为 TTTCell 的 bean,我在其中初始化了一个 PropertyChangeSupport 变量。然后我实现了维护属性更改侦听器列表的功能。

我现在把这个 bean 放在另一个名为 TTTBoard 的 bean 中,它给了我以下错误:

对我来说这没有任何意义 - PropertyChangeSupport 变量被实例化,为什么它应该是一个空指针?

仅供参考,我使用的是 Netbeans IDE 11.1 和 openjdk 11.0.11