Java JFrame中的错误
我看到[10:00] 开始用Java创建一个2d游戏时,我尝试使用他在视频中使用的代码,但我发现了错误,我不知道如何修复他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
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();
}