Java 如何导入JFrame?

Java 如何导入JFrame?,java,swing,jframe,Java,Swing,Jframe,导入javax.swing.JFrame行识别为类,因此不会导入。由于JFrame不会导入,因此无法识别这两种set方法。我有最新的JDK,并使用shift+ctrl+T命令检查JFrame类是否存在。发生了什么事?这是因为JPanel没有这些方法。setName甚至不存在。存在,但我不认为这是你的本意 package main; import javax.swing.JFrame; public class Main extends JPanel{ public Main() {

导入javax.swing.JFrame行识别为类,因此不会导入。由于JFrame不会导入,因此无法识别这两种set方法。我有最新的JDK,并使用shift+ctrl+T命令检查JFrame类是否存在。发生了什么事?

这是因为JPanel没有这些方法。setName甚至不存在。存在,但我不认为这是你的本意

package main;

import javax.swing.JFrame;

public class Main extends JPanel{

    public Main() {
        add(new Panel());
        setName("NGame");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}
这是因为JPanel没有这些方法。setName甚至不存在。存在,但我不认为这是你的本意

package main;

import javax.swing.JFrame;

public class Main extends JPanel{

    public Main() {
        add(new Panel());
        setName("NGame");
        setDefaultCloseOperation(EXIT_ON_CLOSE);
    }
}

您需要使
Main
extend
JFrame
,而不是
JPanel
。试着这样做:

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main extends JFrame {

    public Main() {
        //instead of setName()
        setTitle("NGame");
        add(new Panel());
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        //setVisible(true);
        //pack();
        //etc etc
    }
}

您需要使
Main
extend
JFrame
,而不是
JPanel
。试着这样做:

import javax.swing.JFrame;
import javax.swing.JPanel;

public class Main extends JFrame {

    public Main() {
        //instead of setName()
        setTitle("NGame");
        add(new Panel());
        setDefaultCloseOperation(EXIT_ON_CLOSE);

        //setVisible(true);
        //pack();
        //etc etc
    }
}
有几件事

  • 您正在从
    JPanel
    扩展,但没有导入它
  • 您正在导入
    JFrame
    ,但没有实际使用它
  • setDefaultCloseOperation
    对于
    JPanel
  • EXIT\u ON\u CLOSE
    是一个未知变量,因为它未在
    JPanel
    或其任何父类中声明
  • 您正在混合重分量和轻分量(
    Panel
    是重分量,而
    JPanel
    是轻分量,这些分量往往混合不好)
  • 相反,尝试从
    JFrame
    扩展

    package main;
    
    import javax.swing.*;
    
    public class Main extends JFrame {
    
        public Main() {
           add(new JPanel());
           //...other code
        }
    
    }
    
    话虽如此,现在。通常不需要从
    JFrame
    扩展,因为您很少向它添加任何新功能

    相反,您应该创建
    JFrame
    的一个实例,并将您的组件添加到其中,例如

    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class Main extends JFrame {
    
        public Main() {
            add(new JPanel());
            setName("NGame");
            setDefaultCloseOperation(EXIT_ON_CLOSE);
        }
    }
    
    有几件事

  • 您正在从
    JPanel
    扩展,但没有导入它
  • 您正在导入
    JFrame
    ,但没有实际使用它
  • setDefaultCloseOperation
    对于
    JPanel
  • EXIT\u ON\u CLOSE
    是一个未知变量,因为它未在
    JPanel
    或其任何父类中声明
  • 您正在混合重分量和轻分量(
    Panel
    是重分量,而
    JPanel
    是轻分量,这些分量往往混合不好)
  • 相反,尝试从
    JFrame
    扩展

    package main;
    
    import javax.swing.*;
    
    public class Main extends JFrame {
    
        public Main() {
           add(new JPanel());
           //...other code
        }
    
    }
    
    话虽如此,现在。通常不需要从
    JFrame
    扩展,因为您很少向它添加任何新功能

    相反,您应该创建
    JFrame
    的一个实例,并将您的组件添加到其中,例如

    import javax.swing.JFrame;
    import javax.swing.JPanel;
    
    public class Main extends JFrame {
    
        public Main() {
            add(new JPanel());
            setName("NGame");
            setDefaultCloseOperation(EXIT_ON_CLOSE);
        }
    }
    

    右键单击src,然后构建路径、库,删除JRE系统库,添加库,然后再次添加。这至少对我有帮助=)

    右键单击src,然后构建路径、库,删除JRE系统库,添加库,然后再次添加。这至少对我有帮助=)

    为什么不尝试使用常规编辑器。@yannis“常规编辑器”是什么意思?
    Notepad++
    SublimateText
    ,甚至nano或vi.和JDK工具
    javac
    java
    。当你开始使用一种语言时,最好避免使用像eclipse这样的IDE,因为我现在在语言和cs方面的经验要丰富得多,所以我不同意你的观点。我认为像Eclipse这样的IDE对于学习语言语法/库是有效的@giannischristofakisNevertheless,这只是我的意见。在您的编程生涯中,有时您需要在没有任何IDE或UI的开发服务器上开发。此外,我还遇到了许多初露头角的开发人员,他们不知道如何在没有IDE的情况下构建/部署甚至编译源文件。为什么不尝试使用常规编辑器。@yannis“常规编辑器”是什么意思?
    Notepad++
    SublimiteText
    ,甚至nano或vi。以及JDK工具
    javac
    java
    。当你开始使用一种语言时,最好避免使用像eclipse这样的IDE,因为我现在在语言和cs方面的经验要丰富得多,所以我不同意你的观点。我认为像Eclipse这样的IDE对于学习语言语法/库是有效的@giannischristofakisNevertheless,这只是我的意见。在您的编程生涯中,有时您需要在没有任何IDE或UI的开发服务器上开发。此外,我还遇到了许多初露头角的开发人员,他们不知道如何在没有IDE的情况下构建/部署甚至编译源文件。“setName甚至不存在”-啊,是的,它存在…@MadProgrammer我知道,我认为他不打算以这种方式使用它。别忘了他是个初学者。“setName根本不存在”-啊,是的…@我知道,我认为他不是有意这样使用它的。别忘了他是个初学者。好的,我认为没有人能和他竞争。你能告诉我使用
    setName
    的原因吗?@yannishristofakis我认为
    setName
    的“主要”原因是GUI表单设计者。如果您想要标识同一类型对象的多个实例,但没有对初始变量的引用,那么它也可能很有用。是的,有很多人和我竞争,让我专注于做最好的自己,保持高水平。如果我滑倒,他们通常会踢我的后背。。。我很感激他们这么做;)+1好吧,我认为没有人能与之竞争。你能告诉我使用
    setName
    的原因吗?@yannishristofakis我认为
    setName
    的“主要”原因是GUI表单设计者。如果您想要标识同一类型对象的多个实例,但没有对初始变量的引用,那么它也可能很有用。是的,有很多人和我竞争,让我专注于做最好的自己,保持高水平。如果我滑倒,他们通常会踢我的后背。。。我很感激你