为什么即使执行了 JFrame 代码,我的 JFrame 也没有显示?

Why is my JFrame not showing even though the JFrame code is executed?

我正在为我的应用程序制作一个 JFrame 来充当登录面板。在 运行 class 之后,我注意到了几个问题。一、eclipse(我用的IDE)显示该行已经执行。将 JFrame 设置为可见应该使其对用户可见,但是,我在屏幕上看不到它。此外,eclipse 向我显示该进程仍在 运行,并且没有退出代码。

我的LoginPanel.java:

import java.awt.EventQueue;

import javax.swing.JFrame;

public class Test {

    private JFrame frmLogin;

    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        Test window = new Test();
        window.frmLogin.setVisible(true);
    }

    /**
     * Create the application.
     */
    public Test() {
        initialize();
    }

    /**
     * Initialize the contents of the frame.
     */
    private void initialize() {

        System.out.println("Opening Login Panel");

        frmLogin = new JFrame();
        frmLogin.setTitle("Test");
        frmLogin.setBounds(100, 100, 585, 380);
        frmLogin.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frmLogin.setVisible(true);

        System.out.println("Window Loaded In");

    }

}

经过一些观察,我注意到了几件事。需要注意的是,当EventQueue被注释掉的时候,日志中输出了"Window Loaded In"的Logger语句,也就是说前面几行代码已经执行过了。但是,仍然没有显示 window。

我尝试了什么:

我尝试添加语句:assert frmLogin.isVisible();,但是,该语句说 JFrame 是可见的,这没有意义,因为它没有显示在屏幕上。似乎所有代码都在执行,但即使我在 initialize() 方法和 start() 方法中两次使用 frmLogin.setVisible(true); 将其设置为可见,JFrame 仍然没有显示。

好消息,我终于找到问题了。结果是我使用的 SWT 库以某种方式干扰了 JFrame。删除它解决了问题并使 JFrame 出现。 JDK 1.7 中AWT 重写了很多类 之后,SWT 似乎还是有很多问题。