Java 为什么我的JFrame会在几秒钟后关闭?

Java 为什么我的JFrame会在几秒钟后关闭?,java,swing,Java,Swing,我是java新手,正在学习swing和JFrames。我已经学习了多个教程,我无法让我的JFrame保持打开状态。当我运行代码时,我可以看到空的JFrame打开,但它会在大约2秒钟后关闭或消失。当我使用IntelliJ和Eclipse时会发生这种情况。我已经发布了我的代码示例,它应该会打开一个空的JFrame,但它总是在几秒钟后消失。有人能帮我阻止它关闭吗 我试图解决的问题 重新安装的Java jdk-13.0.1 重新安装IntelliJ和Eclipse 将jdk/bin目录添加到windo

我是java新手,正在学习swing和JFrames。我已经学习了多个教程,我无法让我的JFrame保持打开状态。当我运行代码时,我可以看到空的JFrame打开,但它会在大约2秒钟后关闭或消失。当我使用IntelliJ和Eclipse时会发生这种情况。我已经发布了我的代码示例,它应该会打开一个空的JFrame,但它总是在几秒钟后消失。有人能帮我阻止它关闭吗

我试图解决的问题

  • 重新安装的Java jdk-13.0.1
  • 重新安装IntelliJ和Eclipse
  • 将jdk/bin目录添加到windows环境变量
  • 更新的视频卡驱动程序

    package com.FrameDemo;
    
    import javax.swing.*;
    
    public class EmptyJFrame {
    
        public static void main(String[] args) {
    
            JFrame frame = new JFrame();
            frame.setSize(300, 300);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            frame.setVisible(true);
        }
    }
    

我无法重现这个问题,但我可以描述一下您的代码是如何为我工作的,使用从命令行构建的Java13:

  • 以某种方式获得命令提示并导航到
    com
    文件夹的位置(该文件夹随后包含
    FrameDemo
    EmptyJFrame.java
  • 正如您所说的,JDK已经在path中,输入
    javac com\FrameDemo\EmptyJFrame.java
  • 然后键入
    javacom.FrameDemo.EmptyJFrame
在我的特殊情况下,您的文件是
c:\test\com\FrameDemo\EmptyJFrame.java
,因此我在
c:\test
中键入了这些命令,并且我还需要首先在路径中添加JDK:


因此,它是Java13(虽然我不确定
.0.1
,它来自
2019-09-17
),是的,它可以工作,面板一直打开,直到我自己关闭它。

我从控制台和IntelliJ尝试了它,但我无法重现这个问题。这是全部代码吗?您可能需要使用单独的线程教程没有使用单独的线程。它非常小,应该打开一个空的JFrame。当我运行代码时,JFrame会打开2-3秒,然后消失。我只是厌倦了从IntelliJ和EclipseIDE运行代码。我不知道如何在IDE之外运行它。这能回答你的问题吗?如果您在Windows操作系统上运行此程序,即使swing框架“自动关闭”,如果在启动程序后发现java进程处于活动/添加状态,请务必在任务管理器中进行检查。如果是的话,试着把它带到前面,看看它是否能保持。谢谢你花时间试用我的代码。我一步一步地完成了你所做的一切,我的jframe在大约2秒钟内打开和关闭。我不能让它一直开着。无论我是否尝试使用命令行、Intellij或Eclipse打开它。帧在几秒钟后消失。我没有办法解决这个问题。这是13.0.0,不是13.0.1。
Microsoft Windows [Version 10.0.17134.1184]
(c) 2018 Microsoft Corporation. All rights reserved.

C:\test>path c:\External\jdk-13\bin

C:\test>java --version
openjdk 13 2019-09-17
OpenJDK Runtime Environment (build 13+33)
OpenJDK 64-Bit Server VM (build 13+33, mixed mode, sharing)

C:\test>javac com\FrameDemo\EmptyJFrame.java

C:\test>java com.FrameDemo.EmptyJFrame