如果执行操作(例如按下按钮),如何平滑移动JButton。这是我的例子,但它不能正常工作:
public void actionPerformed(ActionEvent event) {
for(int i = 0; i<50; i++){
ww.button.setLocation(ww.button.getLocation().x+1, ww.button.getLocation().y);//ww is a JFrame child
try {
Thread.sleep(20);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
执行完行动后,我得到20 * 50毫秒的延迟,按钮位置设置在之前的loc + 50px,没有中间位置。
答案 0 :(得分:3)
使用Swing时始终尽量避免使用Thread
。在您的代码中,它将使主EDT线程进入休眠状态,这就是您无法查看中间位置的原因。使用Swing Timer尝试此操作,您将按预期工作。看看这里:How to Use Swing Timers并尝试使用Swing workers。