【发布时间】:2018-03-20 10:51:37
【问题描述】:
我有一个由 1 个按钮、1 个文本字段、1 个标签组成的 GUI。它 将字符串从文本字段转换为 int。减 1. 在标签上打印
@Override
public void run() {
while (runner == Thread.currentThread()) {
try {
System.out.println("Step 1");
int count = Integer.valueOf(txt.getText());
System.out.println("Step 2");
while (count != 0) {
count--;
lblcount.setText("Time Left is " + Integer.toString(count));
Thread.sleep(1000);
System.out.println("Step 3");
}
} catch (InterruptedException ie) {
System.out.println("error of some sort here step 4");
}
}
repaint();
}
public static void main(String[] args) {
Timed2 dd = new Timed2();
}
@Override
public void actionPerformed(ActionEvent eve) {
Object source = eve.getSource();
if (source.equals(btncount)) {
run();
}
}
控制台错误
Step 1
Exception in thread "Thread-1" java.lang.NumberFormatException:
For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:504)
at java.lang.Integer.valueOf(Integer.java:582)
at timed2.Timed2.run(Timed2.java:42)
at java.lang.Thread.run(Thread.java:745)
如何在用户输入数字之后而不是之前更改线程以读取文本框,从而给我这个错误,这意味着它什么都不倒计时
【问题讨论】:
-
请附上问题陈述。说“这根本行不通”与“嘿,我的代码坏了,快来修复它”没有太大区别。
-
程序运行并且没有给出错误。但它永远不会到达 catch 语句。它只在控制台上打印出第 1 步,这意味着它永远不会到达第 2 步。所以如果我没有收到错误,是什么阻止了代码编译.....?
标签: java multithreading