用事件调度线程构造GUI并进行赋值

时间:2014-01-03 01:21:57

标签: multithreading events variable-assignment event-dispatch-thread dispatch

我想在不创建变量gui final的情况下执行以下操作:


public class MainClass
{

        GUIClass gui;
        Runnable r = new Runnable()
        {
            public void run()
            {
                // this won't work!
                gui = new GUIClass();
            }
        };
        SwingUtilities.invokeLater(r);
        Controller c = new Controller(gui);     

}

我怎样才能实现这一目标?我想通过EDT建造gui。同时我想将新实例分配给变量gui。但是如果不制作gui final,这将无法奏效。我不想使用final因为在我的上下文中不可能。任何人都知道如何解决这个问题?上面的代码当然是在main方法中执行的。但由于某些原因,我无法在此处发布错误信息。

1 个答案:

答案 0 :(得分:0)

对于那些有一天应该对这个问题感兴趣的人,这是解决方案: 我犯了一个错误。实际上,您应该区分构建GUI对象并使其可见。所以这是做到这一点的方法:


public class MainClass
{

        final GUIClass gui = new GUIClass();
        Runnable r = new Runnable()
        {
            public void run()
            {           
                gui.pack();
                gui.setVisible(true);
            }
        };
        SwingUtilities.invokeLater(r);
        Controller c = new Controller(gui);     

}