在我的程序中,有一个按钮“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