参考までに、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);
}
}
私が採用できる新しい同僚の追加を処理するための他の構造はありますか? 提案やアイデアをお寄せいただきありがとうございます。