我正在编写一个将我的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)
无法正常工作。抱歉,我英语不好。