保留中のイベントをイベント キューから保存して復元することはできますか?
次のワークフローがあります。ユーザーが JTable 行をクリックすると、行が変更されたかどうかがチェックされ、そのチェック モーダル確認ウィンドウが開かれます。ユーザーがダブルクリックすると、行の詳細ビューが開きます。そのため、モーダル ウィンドウが開かれると、すべてのマウス イベントが飲み込まれるため、ダブルクリックは JTable に到達しません。
モーダルウィンドウを開く前にイベントキューからすべての保留中のイベントを保存し、モーダルウィンドウを閉じた後にそれらを復元したかったのです。
私が試した後に
EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
Stack<AWTEvent> events = new Stack<AWTEvent>();
PaintEvent pe = new PaintEvent(DetailPanel.this, PaintEvent.PAINT, new Rectangle(10, 10));
eventQueue.postEvent(pe);
while (eventQueue.peekEvent() != null) {
AWTEvent event = eventQueue.getNextEvent();
events.push(event);
}
..... // modal window code
while(!events.isEmpty()) {
eventQueue.postEvent(events.pop());
}
これは役に立ちません。ダブルクリックしても JTable に到達しません。
また、キュー全体をプッシュしてみました:
EventQueue stackQueue = new EventQueue();
EventQueue eventQueue = Toolkit.getDefaultToolkit().getSystemEventQueue();
stackQueue.push(eventQueue);
... //modal window code
eventQueue.push(stackQueue);
この場合、プログラムはデッドロックしているように見えます。
任意の提案をいただければ幸いです。