在线程0中运行JFrame

时间:2016-01-31 15:15:33

标签: java multithreading swing jframe

当运行一个生成JFrame(Swing)的程序时,为什么如果它在线程0上运行它不显示窗口?在线程0上运行可以通过(OS X)完成:

java -XstartOnFirstThread Driver

示例

public class Driver
{
    public static void main (String args[])
    {   
        SwingUtilities.invokeLater(() -> { 
            WindowClass button = new WindowClass(450, 450);
        });
    }
}
public class WindowClass extends JFrame
{
    public WindowClass(int width, int height)
    {
        setTitle("Demo");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(width, height);
        setVisible(true);
    }
}

1 个答案:

答案 0 :(得分:1)

您需要显示代码,但是您可以通过使用SwingUtilities在EDT上排队来在EDT上运行代码:

SwingUtilities.invokeLater(() -> {
    // start your GUI here
});