我正在为我的应用程序制作一个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仍然没有显示。
答案 0 :(得分:1)
好消息,我终于找到了问题。原来,我使用的SWT库以某种方式干扰了JFrame。删除它解决了问题,并使JFrame出现了。甚至在AWT重写了JDK 1.7中的许多类之后,SWT似乎仍然有很多问题。