Мне нужно, чтобы моя программа принимала цифры с клавиатуры, но нужно разрешить ввод чисел из нескольких цифр.
Мои слушатели выглядят так:
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.сна (500);или что-то подобное заставило бы моих слушателей перестать работать.Есть ли более простой способ сделать это, чем установка таймера и проверка каждые полсекунды?