JPanel 动态滑动
JPanel slide on the fly
我在 JFrame 上有一些 JPanel,想在程序运行时移动它们。
我的代码有很多行,所以我无法将其全部粘贴到此处,但这里是函数示例 toggle
,其中发生了移动。
for(int h=frame.height; h<HEIGHT; h++){
toolbar.setBounds(0, h, size.width, size.height);
try {
Thread.sleep(counter);
} catch (InterruptedException ex) {
Logger.getLogger(Scene.class.getName()).log(Level.SEVERE, null, ex);
}
}
本质上,我希望 JPanel 从北向南移动。
当我在程序初始化期间调用此 toggle
函数时
然后当我启动它时,我可以看到 JPanel 正确移动。如果我添加一个 keylistener 以便我可以在程序 运行 时触发 JPanel 移动,则会发生以下情况:程序在 JPanel 需要移动的时间不执行任何操作,并且在这段时间之后我看到 JPanel它的最终位置。我应该以某种方式重新绘制上一个示例中的 jpanel 的 jframe 还是什么?
在awt 线程上调用了keyListener。如果您尝试从 awt 线程设置动画,则不会发生任何事情,因为 swing 绘制在 awt 线程上。您需要为动画创建一个新线程并使用 Swing.InvokeLater 或类似的方法来绘制您的动画。
我在 JFrame 上有一些 JPanel,想在程序运行时移动它们。
我的代码有很多行,所以我无法将其全部粘贴到此处,但这里是函数示例 toggle
,其中发生了移动。
for(int h=frame.height; h<HEIGHT; h++){
toolbar.setBounds(0, h, size.width, size.height);
try {
Thread.sleep(counter);
} catch (InterruptedException ex) {
Logger.getLogger(Scene.class.getName()).log(Level.SEVERE, null, ex);
}
}
本质上,我希望 JPanel 从北向南移动。
当我在程序初始化期间调用此 toggle
函数时
然后当我启动它时,我可以看到 JPanel 正确移动。如果我添加一个 keylistener 以便我可以在程序 运行 时触发 JPanel 移动,则会发生以下情况:程序在 JPanel 需要移动的时间不执行任何操作,并且在这段时间之后我看到 JPanel它的最终位置。我应该以某种方式重新绘制上一个示例中的 jpanel 的 jframe 还是什么?
在awt 线程上调用了keyListener。如果您尝试从 awt 线程设置动画,则不会发生任何事情,因为 swing 绘制在 awt 线程上。您需要为动画创建一个新线程并使用 Swing.InvokeLater 或类似的方法来绘制您的动画。