仅供参考,我在 Swing on Java 中为我的 GUI 采用了中介者模式。
不幸的是,如果用户输入需要新窗口,则总是会引发并发修改异常。
这是因为我的代码在处理来自现有同事(窗口)的用户输入的过程中,尝试将新同事(新窗口)添加到调解员的同事列表中。
例如
public MainScreenColleague implements GuiColleague, ActionListener {
private GuiMediator mediator;
public MainScreenColleague(GuiMediator medi) {
mediator = medi;
// implement JFrame with JButtons
}
public conveyInputToMediator(EventObject event) {
mediator.conveyInputToColleagues(event);
}
public receiveInputFromMediator(EventObject event) {
if (event.getSource() = particularBtn) {
GuiColleague particularColleague = new ParticularConcreteColleague(mediator);
//THIS IS THE CODE THAT THROWS CONCURRENCY EXCEPTION
mediator.addGuiColleague(particularColleague);
}
}
是否有其他一些我可以采用的处理添加新同事的结构?提前感谢您的任何建议或想法。