Java JFrame中的错误

Java JFrame中的错误,java,swing,jframe,Java,Swing,Jframe,我看到[10:00] 开始用Java创建一个2d游戏时,我尝试使用他在视频中使用的代码,但我发现了错误,我不知道如何修复他 package me.Kenig.game2d; import java.awt.Canvas; import java.awt.Dimension; import javax.swing.JFrame; public class Game extends Canvas implements Runnable { private static final

我看到[10:00] 开始用Java创建一个2d游戏时,我尝试使用他在视频中使用的代码,但我发现了错误,我不知道如何修复他

package me.Kenig.game2d;

import java.awt.Canvas;
import java.awt.Dimension;

import javax.swing.JFrame;


public class Game extends Canvas implements Runnable {

    private static final long serialVersionUID = 1L;

    public static final int WIDTH = 160;
    public static final int HEIGHT = WIDTH/12*9;
    public static final int SCALE = 3;
    public static final String NAME = "Game";

    private JFrame frame; // error

    public Game(){
    setMinimumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));
    setMaximumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));
    setPreferredSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));
    }

    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // error


    @Override
    public void run() {
        // TODO Auto-generated method stub

    }

}
1) 您从不实例化JFrame

试一试

在构造函数中

2) 另一个问题:

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
不在正确的位置:它应该在方法中。您还应该更喜欢
WindowConstants.EXIT_ON_CLOSE
而不是
JFrame.EXIT_ON_CLOSE

3) 您还应该调用
frame.pack()
,强制框架调整其大小以适应其包含元素的大小

下面是一段代码:

public Game(){
  JFrame frame = new JFrame();
  frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

  setMinimumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));
  setMaximumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));

  //Not really necessary because of frame.pack()
  //setPreferredSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));

  //You should add some elements here
  JPanel panel=new JPanel();
  panel.add(new JTextField(10));

  frame.add(panel);

  //Forces the frame to take the minimum-size to contain its elements
  frame.pack();
  frame.show();
}
您应该查看哪些组件存在以及它们的行为

您还应该了解组件的放置方式


祝你好运:)

添加行确实会影响这一点,但会在整个页面上添加错误。我知道这很愚蠢,但我是新来的……太好了,我修好了。这行代码还有另一个问题:private BufferedImage image=new BufferedImage(宽度、高度、BufferedImage.TYPE_INT_RGB);私有int[]像素=((DataBufferInt)image.getRaster().getDataBuffer()).getData();//err DATABUFERINT无法解析为变量
public Game(){
  JFrame frame = new JFrame();
  frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);

  setMinimumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));
  setMaximumSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));

  //Not really necessary because of frame.pack()
  //setPreferredSize(new Dimension(WIDTH*SCALE, HEIGHT*SCALE));

  //You should add some elements here
  JPanel panel=new JPanel();
  panel.add(new JTextField(10));

  frame.add(panel);

  //Forces the frame to take the minimum-size to contain its elements
  frame.pack();
  frame.show();
}