我在尝试创建JFrame时使用了以下代码:
public class Window {
private JFrame frame;
private Canvas canvas;
private BufferedImage image;
private Graphics g;
private BufferStrategy bs;
public Window(GameContainer gc) {
image = new BufferedImage(gc.getWidth(), gc.getHeight(), BufferedImage.TYPE_4BYTE_ABGR);
canvas = new Canvas();
Dimension s = new Dimension((int)(gc.getWidth() * gc.getScale()), (int)(gc.getHeight() * gc.getScale()));
//Why two of same lines?
canvas.setPreferredSize(s);
canvas.setMaximumSize(s);
canvas.setPreferredSize(s);
frame = new JFrame(gc.getTitle());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLayout(new BorderLayout());
frame.add(canvas, BorderLayout.CENTER);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setVisible(true);
canvas.createBufferStrategy(1);
bs = canvas.getBufferStrategy();
g = bs.getDrawGraphics();
}
public void update() {
g.drawImage(image, 0, 0, canvas.getWidth(), canvas.getHeight(), null);
bs.show();
}
}
每当我在eclipse中运行我的项目时(我的主要方法是在另一个类中;我没有忘记一个),JFrame显示然后几乎立即关闭。我希望你们中的一个可以指导我的错误。我还有另一个类,它本质上是一个游戏循环,每帧调用window.update()
,如果这会导致任何问题。如果在这里找不到问题,我可以附加一些其他相关类的代码,但是目前我不认为它们是问题而且我不想用不必要的代码陷入困境。