我目前正在学习使用 PropertyChangeListener 和 PropertyChangeSupport 类。我有点卡在侦听器接收事件的部分,所以我需要这部分的帮助。
在我的程序中有 2 个类:
- 一、控制器,实现PropertyChangeListener
- 另一个,模型,实现了 propertyChangegSupport
控制器:
public class Controlador implements PropertyChangeListener {
private ControlAccesos modelo;
private GUIpanel vistaPan;
private GUIsenal vistaSen;
public Controlador(GUIpanel vista1, GUIsenal vista2, ControlAccesos model){
modelo=model;
vistaPan = vista1;
vistaSen = vista2;
modelo.addPropertyChangeListener(this);
}
public void propertyChange(PropertyChangeEvent evt) {
System.out.print("Resultado");
if (evt.getPropertyName().equals("mensaje")){
vistaPan.refrescaMensaje((String)evt.getNewValue());
}
}
}
模型:
/**
* Clase principal del sistema de control de accesos a la facultad.
*/
public class ControlAccesos
{
/**
* Mesaje shown in the GUI
*/
private String mensaje;
private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
.
.
.
public void TarjetaDetectada( String usuario )
{
state.TarjetaDetectada(this, usuario);
changeSupport.firePropertyChange("mensaje",this.mensaje,this.mensaje);
}
public void addPropertyChangeListener( PropertyChangeListener listener ){
changeSupport.addPropertyChangeListener(listener);
}
问题是代码永远不会到达 propertyChange 函数(“Resultado”永远不会打印在屏幕上)。
先感谢您。