gpt4 book ai didi

java - 使用 PropertyChangeListener 接口(interface)是一个好方法吗?

转载 作者:行者123 更新时间:2023-12-02 06:31:45 25 4
gpt4 key购买 nike

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

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

@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("Button cliccked");

Main listener = new Main(); // I intantiate a new Main object to have the PropertyChangeListener
this.addPropertyChangeListener(listener); // I add the PropertyChange Listener to this LoginFrame object

/* I fire a PropertyChange: the event start and will be handled by the propper propertyChange() method definied in the
* listener class:
*
* @param "loginButtonClicked"
* */
firePropertyChange("loginResult", false, loginResult);


}

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

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

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

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

  3. 新值:在本例中,它是 loginResult 变量的内容(如果用户正在登录系统,则为 true)

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

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

我的推理正确吗?这可能是使用 PropertyChangeListener 接口(interface)的好方法吗?

Tnx

安德里亚

最佳答案

你可以这样使用它,它会起作用。但我认为你的问题更多的是关于语义,而不仅仅是它是否有效。该接口(interface)的包是java.beans,它将它放在bean 的上下文中。如果您在 beans 上下文中使用它,即您的事件发布者是一个 bean,那么我认为该接口(interface)的“深层含义”与您的使用一致。 javadoc 说

A "PropertyChange" event gets fired whenever a bean changes a "bound" property.

如果你认为它不适合 Bean,那么就创建你自己的

关于java - 使用 PropertyChangeListener 接口(interface)是一个好方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20004912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com