如何在EDT上访问我的JFrame

时间:2014-04-08 21:05:52

标签: java multithreading swing event-dispatch-thread

我有一个类,它有一个JFrame,在我的JFrame上,它包含一些我想要调用的方法。问题是我的类在主线程中,mFrame现在被委托给EDT线程,那么我如何向EDT发送指令来运行这些方法呢?

更新

这是扩展JFrame的我的FrameRadar,如你所见,我有一个更新方法,基本上还有mDisplay和mRadar的更新,这些是jpanel。

FrameRadar Class ...(

public class FrameRadar{
...
public void update() {
    mAccessor.getmDisplay().update();
    mAccessor.getmRadar().update();
}

这是我的MainRadar类,它包含一个FrameRadar,我也有一个更新方法。该更新方法将调用jframe的更新。

class MainRadar(
 ....
private FrameRadar mFrame;
 ....
public StateMainGame() {
    init();
}

public void init() {
....
java.awt.EventQueue.invokeLater(new Runnable() {
        @Override
        public void run() {
            mFrame = new FrameRadar();
            mFrame.setVisible(true);
        }
    });
}
....
public void update() {
    mFrame.update();
}

如您所见,MainRadar.Update-> FrameRadar->更新 - > Jpanels->更新。问题是我无法使用

  

mFrame.update();

0 个答案:

没有答案