有没有办法从自己的方法处理AWT-Queue?

时间:2011-03-22 00:25:53

标签: java events awt

我看到某个人无法/愿意更改长期运行的方法来返回Future<Something>而非<Something>的问题。不幸的是,该方法也从AWT-Thread调用,具有已知的后果。我告诉过他,他在胡说八道,但可能有可能。他可以从他的方法中启动一个SwingWorker(或其他),并在等待它完成时处理AWT-Queue。

我的意思是

public Something aLongRunningMethodCalledFromTheAwtThread() {
    FutureTask<Something> future = new FutureTask<Something>(...);
    EventQueue eventQueue = Toolkit.getEventQueue();
    while (true) {
        if (future.isDone()) return future.get();
        AWTEvent event = eventQueue.getCurrentEvent();
        if (event==null) {
            waitForAWhile();
        } else {
            eventQueue.pop(); // <---- is protected
            process(event); // <---- BUT HOW???
        }
    }
}

AFAIK,这样的事情在其他框架中完成,我想知道这在Swing / AWT中是否可行?

1 个答案:

答案 0 :(得分:0)

当一个正面向上的解决方案已经存在时,实施一个好的解决方案毫无意义。该方法需要作为单独的线程执行。周期。