gpt4 book ai didi

java - 为 Jlabel 更新图像时出现古怪的问题

转载 作者:行者123 更新时间:2023-11-30 07:29:28 25 4
gpt4 key购买 nike

我在处理作业时遇到了一些问题。

它的一部分是“动画化”一对骰子的滚动。我有 6 张 JPEGS,每一面都有一张。我希望它在图像中循环而不是滚动。我试图在循环中一遍又一遍地使用 setIcon,并使用 Thread.sleep() 进行延迟。除其他事项外,这一切都在用户点击按钮(事件)时发生。它不显示图像,而是等待正确的时间并仅显示最后一张图像。这是我调用来执行循环的函数:

private void aniRoll(){
for(int i = 0; i < 10; i++){
die1Disp.setIcon(new javax.swing.ImageIcon(getClass().getResource("/face1.jpg")));
try{
Thread.sleep(1000); // Sleep for 1 sec
}
catch(InterruptedException e){}
die1Disp.setIcon(new javax.swing.ImageIcon(getClass().getResource("/face2.jpg")));
try{
Thread.sleep(1000);
}
catch(InterruptedException e){}
die1Disp.setIcon(new javax.swing.ImageIcon(getClass().getResource("/face3.jpg")));
try{
Thread.sleep(1000);
}
catch(InterruptedException e){}
die1Disp.setIcon(new javax.swing.ImageIcon(getClass().getResource("/face4.jpg")));
try{
Thread.sleep(1000);
}
catch(InterruptedException e){}
die1Disp.setIcon(new javax.swing.ImageIcon(getClass().getResource("/face5.jpg")));
try{
Thread.sleep(1000);
}
catch(InterruptedException e){}
die1Disp.setIcon(new javax.swing.ImageIcon(getClass().getResource("/face6.jpg")));
try{
Thread.sleep(1000);
}
catch(InterruptedException e){}

}

die1Disp 是我的 JLabel 的名称,aniRoll() 是我调用来执行循环的函数(设为私有(private)是因为我不希望我的 GUI 类之外的任何东西调用它),以及 faceX.jpg是我的图像。

我无法理解的是,无论我将 Thread.sleep() 放在哪里,它都会先延迟程序,然后只显示最后一张图像。例如:

die1Disp.setIcon(new javax.swing.ImageIcon(getClass().getResource("/face1.jpg")));

die1Disp.setIcon(new javax.swing.ImageIcon(getClass().getResource("/face2.jpg")));

//bunch of extra code

try{
Thread.sleep(10000); // Sleep for 10 sec
}
catch(InterruptedException e){}

这将等待 10 秒,然后仅显示第二张图像。它不会快速闪烁第一个,显示第二个,然后等待,它等待并只显示第二个图像。这个怪癖真的让我很困惑,我不知道如何纠正它。我使用 NetBeans IDE 7.01 作为我的编辑器,我使用 Component Palette 进行基本布局和代码生成。

--谢谢

最佳答案

首先,您必须在 gui 线程上进行更改。见

SwingUtils.invokeLater.

Thread.sleep 也不会削减它,您应该使用 javax.swing.Timer 来指定何时切换图标。

关于java - 为 Jlabel 更新图像时出现古怪的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8461646/

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