我有以下情况:
在类中,我使用 firePropertyChange() 方法启动 PropertyChange 事件,该事件在另一个类中被捕获并处理,如下所示:
if (authResponse.getStatusResponse() == 0) {
firePropertyChange("loginResult", false, loginResult);
} else {
errorLabel.setText(authResponse.getErrorMessage());
errorLabel.setVisible(true);
}
好吧,就我而言,我有:
firePropertyChange("loginResult", false, loginResult);
它工作得很好,并且在另一个类中被正确拦截,但我对前面代码的含义有一些疑问,我必须实现一个新的行为。
1) firePropertyChange() 方法中的第 3 个参数到底代表什么?
我认为他们是:
loginResult:属性名称(更改的属性)。 false:是旧值(在我的具体情况下,这意味着用户未登录)。 loginResult:如果用户现在登录,则为 true。
我的推理正确吗?
现在我遇到了以下问题:当我执行 firePropertyChange() 方法时,我正在启动一个包含前 3 个属性的对象事件(这是真的吗?),问题是现在我还必须传递另一个对象(一个表示登录用户的用户名的字符串)。我可以以某种方式将其放入事件对象中吗?
最佳答案
1) What exactly represents the 3 parameter inside the firePropertyChange() method?
- 名称,属性的名称。这通常是 getter 和 setter 的名称,即。
enabled
通常通过使用setEnabled
触发并由isEnabled
检索 - oldValue,更改之前的旧值
- newValue,已更改为的新值
And now I have the following problem: When I perform the firePropertyChange() method I am launching an object event that contains the previous 3 property (is it true?),
是的,您正在触发一个 propertyChanged
事件,该事件将传递给所有已注册的监听器,这将封装在 PropertyChangeEvent
对象中
the problem is that now I have also to pass another object (a String that represent the username of the logged user). Can I put it into the event object in some way?
不,你不能(或者可以,但不应该),这不是此 Activity 的目的。此事件旨在提供有关对象内状态更改的信息,而不是提供有关该状态更改的辅助信息(例如导致其发生的原因)...
相反,您可以...
至于事件来源的更多信息。这确实假设您知道导致事件的对象的类型。
或者...
创建您自己的自定义监听器,其中提供所需的信息。
例如,您可以创建一个具有 authenticationFailed
和 authenticationSucceeded
事件的 AuthenticationListener
。
然后,您可以创建一个AuthenticationEvent
,它携带这些事件方法所需的信息
关于java - 我可以在 firePropertyChange() 启动的事件中传递信息字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20541534/