actionPerformed

时间:2019-06-15 14:53:26

标签: java canvas lwjgl

我正在编写一个将我的lwjgl游戏添加到JPanel的函数,lwjgl游戏是用Canvas构造的。因此,在单击注册了此功能的按钮后,框架卡住了,但是我可以听到我的lwjgl游戏发出的声音。画布根本没有显示。

一旦我注释掉lwjgl游戏的初始化程序,该函数就会很好地工作。我尝试在另一个main()中测试lwjgl游戏,画布完美地显示在JPanel内部。

这是功能:

public void change2Game() {
    Canvas canvas = new Canvas();

    removeAll();
    add(canvas);
    canvas.setVisible(true);
    canvas.setPreferredSize(new Dimension(1000, 600));
    Game game = new Game(canvas);

    revalidate();
    repaint();
}

这就是我在另一个main()中测试的内容:

public static void main(String[] args) {

    JFrame frame = new JFrame();
    JPanel panel = new JPanel();
    Canvas canvas = new Canvas();

    frame.add(panel);
    panel.removeAll();

    panel.add(canvas);
    canvas.setVisible(true);
    canvas.setPreferredSize(new Dimension(1300, 700));
    frame.setVisible(true);
    frame.setSize(1300, 700);
    frame.setTitle("test");

    Game game = new Game(canvas);

    frame.revalidate();
    frame.repaint();

    frame.pack();
    //System.exit(0);
}

我想知道为什么removeAll()行会导致API Game game = new Game(canvas)无法正常工作。抱歉,我英语不好。

0 个答案:

没有答案