【发布时间】:2011-08-15 20:29:31
【问题描述】:
我想知道是否可以通过 RMI 发送主要的 Swing 类事件/动作侦听器、事件、组件。
可能的情况:如果一个客户按下按钮或移动滑块,每个客户的按钮或滑块移动等对于其他摆动元素都是一样的。
我期待在 RMI 和 swing MVC 架构的上下文中得到答案,我想调用 swing 组件的模型,例如 ButtonModel,并希望在线发送 swing ActionEvent 并将 PropertyChangeListener/PropertyChangeSupport 注册为远程对象以获取更新在客户现场。
典型例子: 当模型发生一些变化时,服务器应该为每个客户端调用这个方法
public void propertyChange(PropertyChangeEvent evt) {
for (AbstractViewPanel view: registeredViews) {
view.modelPropertyChange(evt);
}
}
如果一个客户端发生事件,则应从服务器调用每个客户端 actionPerformed:
@Override
public void actionPerformed(ActionEvent e) {
}
可行吗?如果不是那为什么?我可能会遇到问题的地方,我的意思是哪些类是可转移(序列化)的,哪些不是......
编辑:在这里你看到我远程调用 Java Swing defaultbuttonmodel,当它的一些属性或方法改变其他客户端的获取更新时,唯一剩下的就是如果有人可以帮助我,请遵循 swing propertychangelistener 并意识到这一点,那就太好了:
public class RemoteButtonModel extends UnicastRemoteObject implements Model {
private ButtonModel model = new DefaultButtonModel() ;
protected myModel() throws RemoteException {
super();
}
@Override
public void setEnabled(boolean b) throws RemoteException {
if (isEnabled())
model.setEnabled(false);
else{
model.setEnabled(true);
}
}
@Override
public boolean isEnabled() throws RemoteException {
return model.isEnabled();
}
}
【问题讨论】:
标签: java model-view-controller swing user-interface rmi