Java 编译代码后,JFrame不会出现

Java 编译代码后,JFrame不会出现,java,swing,jform,Java,Swing,Jform,我正在使用Intellij idea平台 我有以下代码: package GUI.test; import javax.swing.*; public class Ramka extends JFrame{ Ramka(){ setVisible(true); setSize(100,100); } public void main (String[] args){ new Ramka(); } } 我本

我正在使用Intellij idea平台

我有以下代码:

package GUI.test;
import javax.swing.*;

public class Ramka extends JFrame{

    Ramka(){

        setVisible(true);
        setSize(100,100);

    }

    public void main (String[] args){
        new Ramka();
    }
}
我本想在编译完这段代码后看到一个JFrame,但什么也没有出现。这会是什么样的问题


也必须承认,我没有可能运行方法“main”。InteligIdea建议我只编译Ramka.java。编译完IntelijIdeay后,他说,编译成功完成了,但仅此而已,什么也没有发生。在我之前的练习中,我总是运行方法“main”。

如果您实际运行main,您将看到您的Ramka。Main应该始终声明为
publicstaticvoidmain(String[]args)
,您忘记了
static
。如果将其更改为:

public static void main (String[] args){

    new Ramka();
}

它应该运行。

如果你真的运行main,你会看到你的Ramka。Main应该始终声明为
publicstaticvoidmain(String[]args)
,您忘记了
static
。如果将其更改为:

public static void main (String[] args){

    new Ramka();
}

它应该运行。

您应该执行以下操作:

public static void main (String[] args){
            java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Ramka().setVisible(true);
            }
        });
    }

除了在
main
中缺少
static
标识符之外,您还必须确保您的框架运行在swing的正确线程检查中您应该执行以下操作:

public static void main (String[] args){
            java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new Ramka().setVisible(true);
            }
        });
    }

除了在
main
中缺少
static
标识符之外,您还必须确保您的框架运行在正确的swing线程检查中

您在了解基本Java之前尝试创建swing GUI,这似乎是把车放在了马的前面。我强烈建议您从一开始就开始学习Java基础知识的入门教程,例如可以找到。在这里,您将了解主方法是如何构造的,编译程序与运行程序是不同的,等等。相信我,您不会后悔这样做的。您在了解基本Java之前尝试创建Swing GUI,这似乎是本末倒置。我强烈建议您从一开始就开始学习Java基础知识的入门教程,例如可以找到。在那里你会发现一个main方法是如何构造的,编译一个程序和运行一个程序是不同的,等等。相信我,你不会后悔这样做的。