java - 我可以在 firePropertyChange() 启动的事件中传递信息字符串吗?

标签 java swing events

我有以下情况:

在类中,我使用 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 的目的。此事件旨在提供有关对象内状态更改的信息,而不是提供有关该状态更改的辅助信息(例如导致其发生的原因)...

相反,您可以...

至于事件来源的更多信息。这确实假设您知道导致事件的对象的类型。

或者...

创建您自己的自定义监听器,其中提供所需的信息。

例如,您可以创建一个具有 authenticationFailedauthenticationSucceeded 事件的 AuthenticationListener

然后,您可以创建一个AuthenticationEvent,它携带这些事件方法所需的信息

关于java - 我可以在 firePropertyChange() 启动的事件中传递信息字符串吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20541534/

相关文章:

java - "java.lang.UnsatisfiedLinkError: Native method not found:"去掉头文件可以修复错误吗?

java - 如何在 Java 桌面应用程序中使用 Windows 7 跳转列表?

java - Swing : change selected tab value

javascript - 使图像适合视口(viewport)

java - 正则表达式找不到字符串

java - 集群tomcat、数据库或文件系统中的图片上传

java - 如何将 csv 文件与 hive 中的表连接起来

Java 使组件能够相互通信

linux - 如何读取/dev/input/eventX

c++ - 系统事件 EVENT_SYSTEM_SWITCHSTART 和 EVENT_SYSTEM_SWITCHEND 在 Windows 7 中有效,但在 Windows 10 中无效