gpt4 book ai didi

java - 无法缓慢移动面板

转载 作者:行者123 更新时间:2023-12-01 13:15:41 25 4
gpt4 key购买 nike

我有一个简单的问题。我想每一步移动一点 JPanel(在另一个 JPanel 内),这样看起来就像连续移动(“Number”是我扩展 JPanel 的类):

Number n = (Number)this.findComponentAt(x, y);
for(int pp= 0; pp<10; pp++){
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
n.setLocation(x-10*pp, y);
n.repaint();
}

Number 的 PaintComponent 方法是:

public void paintComponent(Graphics g){
super.paintComponent(g);
numIc.paintIcon(this, g, 0, 0);
}

然而,它并不是一步一步地移动,而是在延迟了10次之后突然向最终目的地移动!我搜索了问题,但没有找到有用的答案。

最佳答案

阅读 Swing 教程中有关并发的部分,以便了解 Event Dispatch Thread 。 Thread.sleep() 方法导致 EDT hibernate ,因此 GUI 无法重新绘制自身。

使用 Swing 计时器来安排动画。查看上面链接中的目录,您还会发现关于如何使用 Swing Timers 的部分。

另外,为什么要创建一个自定义组件来绘制图标?只需使用带有图标的 JLabel 并将标签添加到绘画中即可。不要重新发明轮子。

关于java - 无法缓慢移动面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22494943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com