在我的程序中,有一個按鈕「Display」,另一個按鈕「Reset」。 用戶在文本字段中輸入他們想要的素數的數量,然後單擊「顯示」按鈕。然後,第一個x素數將出現在文本區域中。重新設置新線程
在代碼中,我有: 聲明:
Thread go;
Thread newThread;
JLabel howManyLabel;
JTextField howMany;
JButton display;
JButton reset;
JTextArea primes;
操作事件:
public void actionPerformed(ActionEvent event) {
Object source = event.getSource();
if (source == display) {
display.setEnabled(false);
if (go == null) {
go = new Thread(this);
go.start();
} else {
newThread = new Thread(this);
newThread.start();
}
} else if (source == reset) {
display.setEnabled(true);
howMany.setText(" ");
primes.setText(" ");
}
}
Run方法:
public void run() {
int quantity = Integer.parseInt(howMany.getText());
int numPrimes = 0;
int candidate = 2; // candidate = the number that MIGHT be prime
primes.append("First " + quantity + " primes:");
while(numPrimes < quantity) {
if (isPrime(candidate)) {
primes.append(candidate + ", ");
numPrimes++;
}
candidate++;
}
}
的run()方法是在同類,並簡單地計算素數的前x個數量。
我試圖每次調用「重置」按鈕時創建一個新的線程。線程第一次運行,但在單擊「重置」後不會再運行。 run()方法只能工作一次嗎?
在此先感謝。
不,每次啓動線程時都會運行run方法。也許'run()'中的代碼需要重新初始化? – Gray
run()中的代碼是做什麼的? – csharpwinphonexaml
請爲'display,go,newThread,howMany,primes'和'run'的主體添加成員變量聲明,以便我們能夠理解正在發生的事情... – japreiss