Java 为什么即使执行了JFrame代码,我的JFrame也不显示?
我正在为我的应用程序制作一个JFrame,作为登录面板。开课后,我注意到了几个问题。第一,eclipse(我正在使用的IDE)显示该行已经执行。将JFrame设置为可见应该可以让用户看到它,但是,我在屏幕上看不到它。此外,eclipse向我显示该进程仍在运行,并且没有使用退出代码退出 My LoginPanel.java:Java 为什么即使执行了JFrame代码,我的JFrame也不显示?,java,swing,jframe,Java,Swing,Jframe,我正在为我的应用程序制作一个JFrame,作为登录面板。开课后,我注意到了几个问题。第一,eclipse(我正在使用的IDE)显示该行已经执行。将JFrame设置为可见应该可以让用户看到它,但是,我在屏幕上看不到它。此外,eclipse向我显示该进程仍在运行,并且没有使用退出代码退出 My LoginPanel.java: import java.awt.EventQueue; import javax.swing.JFrame; public class Test { priva
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是可见的,这没有意义,因为它没有显示在屏幕上。似乎所有的代码都在执行,但是JFrame仍然没有显示,即使我使用frmLogin.setVisible(true)将其设置为可见在initialize()方法和start()方法中,代码>两次 好消息,我终于找到了问题所在。结果表明,我使用的SWT库以某种方式干扰了JFrame。移除它解决了问题,并使JFrame出现。即使在JDK1.7中对许多类进行了AWT重写之后,SWT仍然存在很多问题 它是不是真的很小?您可以在使用setvisible之前设置大小,以确保它不会太小。您正在运行调试器吗?有时,如果您处于断点,调试器会阻止gui显示。@matt不工作,而且我将边界设置为585乘380,请阅读代码。设置边界不是设置大小。“不工作”是没有意义的。这个过程结束了吗?或者是程序挂起了,但你什么也看不到。你可以花一点时间,减少所有的积垢,只留下有意义的部分。我们不需要看到评论。@马特对此表示抱歉。我编辑了问题并删除了不必要的代码。这个过程没有结束,它一直执行到最后一行代码,但是JFrame没有出现。