我起草了下面的应用程序,以循环访问字符串数组(我是一个初学者)。目标是使用JLabel在JFrame上显示数字1到5;每秒更换一次。JFrame;首先显示for循环的数组元素[1],而不是[0]
当JFrame在屏幕上弹出时,奇怪地显示数组“1”处的数字“2”。这与我的期望相反,我无法弄清楚为什么。
我被初始化为1;存储在“temp”中;然后将其添加到JLabel中,最后添加到JFrame中。使用这种方法会有延迟吗?即JLabel更新的时间; for循环已经推进了?或者,我了解Java.swing有线程问题...?
您的帮助将不胜感激。
Ĵ
package testApplication;
import javax.swing.JFrame;
import javax.swing.JLabel;
public class Count {
public static void main (String args[]){
String[] numbers = {"one","two","three","four","five"};
JLabel numToDisplay = new JLabel("");
String temp;
//Initiate JFrame
JFrame frame = new JFrame("Counting Application");
frame.setSize(275,100);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
for (int i=0; i < numbers.length; i++){
temp = numbers[i];
numToDisplay.setText(temp);
frame.add(numToDisplay);
try {
Thread.sleep(1000);
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
您阻止事件调度线程 - 使用Swing的定时器来代替 – MadProgrammer 2015-01-31 22:47:45