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

时间:2019-07-19 14:40:05

标签: java swing jframe

我正在为我的应用程序制作一个JFrame,它将充当登录面板。上完课后,我注意到了几个问题。首先,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语句,这意味着前面的代码行已经执行。但是,仍然没有显示窗口。

我尝试过的事情

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

1 个答案:

答案 0 :(得分:1)

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