我对PropertyChangeListener
界面的使用有些疑惑。
我有一个名为GUI
实现PropertyChangeListener
接口的类。
在这个类中,我有以下方法来创建和显示一个JFrame
(LoginFrame
是扩展的自定义类JFrame
):
private void showLoginFrame() {
loginFrame = new LoginFrame();
loginFrame.setVisible(true);
loginFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// Notify every change to every bound property for that object:
loginFrame.addPropertyChangeListener(this);
}
所以,在我的LoginFrame
对象上我添加了一个PropertyChangeListener
. 所以我认为我正在添加一种机制,当更改此对象中的属性值时,它会通知此更改,该更改将由以下方法处理(在我的GUI
类中声明):
@Override
public void propertyChange(PropertyChangeEvent arg0) {
System.out.println("GUI SingleFrameApplication ---> propertyChange(): " + arg0.getPropertyName());
if (arg0.getPropertyName().equals("buttonLogOffClicked")) {
//System.out.println("GUI SingleFrameApplication ---> richiamo exit");
//exit();
mainFrame.OnWindowClose();
mainFrame.dispose();
mainFrame = null;
showLoginFrame();
}
if (arg0.getPropertyName().equals("loginResult")) {
System.out.println("GUI SingleFrameApplication ---> richiamo MainFrame");
//loginFrame.setVisible(false);
loginFrame.dispose();
loginFrame = null;
showMainFrame();
}
}
在我的LoginFrame
班级的特定情况下,我有一个JButton
如果单击触发将由前一个方法处理的事件,以这种方式:
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
System.out.println("Button LogIn cliccked");
// 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:
firePropertyChange("loginResult", false, loginResult);
}
我的推理正确吗?
谢谢
安德烈亚