Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么即使执行了JFrame代码,我的JFrame也不显示?_Java_Swing_Jframe - Fatal编程技术网

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

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

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

My 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()frmLogin.setVisible(true)将其设置为可见两次

好消息,我终于找到了问题所在。结果表明,我使用的SWT库以某种方式干扰了JFrame。移除它解决了问题,并使JFrame出现。即使在JDK1.7中对许多类进行了AWT重写之后,SWT仍然存在很多问题

它是不是真的很小?您可以在使用setvisible之前设置大小,以确保它不会太小。您正在运行调试器吗?有时,如果您处于断点,调试器会阻止gui显示。@matt不工作,而且我将边界设置为585乘380,请阅读代码。设置边界不是设置大小。“不工作”是没有意义的。这个过程结束了吗?或者是程序挂起了,但你什么也看不到。你可以花一点时间,减少所有的积垢,只留下有意义的部分。我们不需要看到评论。@马特对此表示抱歉。我编辑了问题并删除了不必要的代码。这个过程没有结束,它一直执行到最后一行代码,但是JFrame没有出现。