我有一个包含 4 个帧的 vector ,它由包含在 JPanel 中的 JButton 的二维数组组成。我正在尝试将它们添加到 JFrame,以便它们在循环时显示动画。
我有一个 add 方法,当我手动递增它时它可以工作,但是当我把它放在 for 循环中时,框架保持空白,就好像它没有被重新绘制一样。终端打印出正确的索引号。
public void addNewFrame() throws InterruptedException {
for (int i = 0; i < 10; i++) {
if (index == 3) {
System.out.println(index);
remove(model.getFrame(3));
revalidate();
repaint();
index = 0;
add(model.getFrame(index), BorderLayout.CENTER);
revalidate();
repaint();
Thread.sleep(300);
} else {
System.out.println(index);
remove(model.getFrame(index));
revalidate();
repaint();
index++;
add(model.getFrame(index), BorderLayout.CENTER);
revalidate();
repaint();
Thread.sleep(300);
}
}
这可能是并发问题吗?我是否应该将二维按钮数组添加到在其自己的线程中运行的 JPannel?
最佳答案
they will display an animation when looped.
不要使用 Thread.sleep() 来尝试控制动画。
动画应该使用 Swing Timer 来完成.
此外,每当我看到删除/添加组件的代码时,它几乎总是错误的。相反,您应该使用 CardLayout
。上面的教程还有一个关于如何使用 CardLayout 的部分。
关于Java,JPanel 不显示在 JFrame 中,可能是并发问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16091820/