我在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或者什么?
答案 0 :(得分:1)
在awt线程上调用keyListener。如果你试图从awt线程中制作动画,那么就不会发生任何事情,因为在awt线程上进行了挥杆绘制。您需要为动画创建一个新线程,并使用Swing.InvokeLater或类似来绘制动画。