我对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事件本身包含以下信息:
propertyName是可以更改的属性的名称(在我的示例中名为loginResult ,因为我有一个名为loginResult的布尔变量,如果用户可以在单击按钮时登录,则值为 true,否则为 false
旧值是可以更改的属性的旧值(在我的示例中为 false,因为如果用户看到登录窗口,则意味着它没有登录并且loginResul=false
新值:在这种情况下,它是loginResult变量的内容(如果用户正在系统中登录,则为 true)
因此,此PropertyChange事件将被我的propertyChange()方法(在侦听器类中声明)拦截,该方法根据这些参数处理它:例如以下列方式:
** 如果 propertyName 是 loginResult 并且如果新值为 true 则不再显示登录窗口,而是显示主应用程序窗口**
我的推理是否正确,它可能是使用PropertyChangeListener接口的好方法?
肿瘤坏死因子
安德烈亚