FYI私はSwing on Javaで自分のGUIにメディエーターパターンを採用しました。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);
}
}
私が採用できる新しい同僚を追加する処理の他の構造がありますか?提案やアイデアを事前に感謝します。
+1非常に有用な代替品です!ありがとう。 – Arvanem