1

保留中のイベントをイベント キューから保存して復元することはできますか?

次のワークフローがあります。ユーザーが 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);

この場合、プログラムはデッドロックしているように見えます。

任意の提案をいただければ幸いです。

4

1 に答える 1