我需要让我的程序从键盘输入数字,但需要输入多个数字的数字。两个或多个数字输入的击键之间的延迟
我的听众是这样的:
class.getRootPane().getInputMap(JRootPane.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke(49,0, false), "one");
class.getRootPane().getActionMap().put("one", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("1 pressed");
}
});
//2
class.getRootPane().getInputMap(JRootPane.WHEN_IN_FOCUSED_WINDOW).put(
KeyStroke.getKeyStroke(50,0, false), "two");
class.getRootPane().getActionMap().put("two", new AbstractAction() {
@Override
public void actionPerformed(ActionEvent e) {
System.out.println("2 pressed");
}
});
我建议有一个全球性的整数存储,其中,如果明确会导致类似的动作:
if (numberfield.isEmpty()){
number = 1;
wait for half a second
if wait is over commit number to function and clear numberfield
}//resulting in "1"
else if (numberfield.isnotEmpty()){
"you must have caught it in time"
numberfield = "numberfield"+"1";
wait for half a second
if wait is over commit number to function and clear numberfield
}//resulting in "11" if 1 was pressed twice
我的问题是:什么是实现这种“延迟”的最好方法。恐怕Thread.sleep(500);或类似的东西会导致我的听众停止工作。有没有更容易的方法来做到这一点比设置一个计时器和检查每半秒?
不理解你为什么需要延迟,你想达到什么目的? – kleopatra
请注意'class'是一个保留[关键字](http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.9)。 – trashgod