JFrame立即关闭

时间:2016-11-07 23:49:08

标签: java swing jframe game-engine

我在尝试创建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(),如果这会导致任何问题。如果在这里找不到问题,我可以附加一些其他相关类的代码,但是目前我不认为它们是问题而且我不想用不必要的代码陷入困境。

0 个答案:

没有答案