我起草了下面的應用程序,以循環訪問字符串數組(我是一個初學者)。目標是使用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