当两种方法 运行 无限期地执行时,您如何连续执行其中一种方法,而另一种方法基于按键事件?
How do you execute one of two methods continuously when they run indefinitely and one based off a keypress event?
我正在开发一个依赖于用户按键和基于时间的事件的应用程序。这些方法将 运行 在两种情况下:
1: 如果用户按下某个键,应用程序将打印 foo.
2: 如果经过 3 秒,则应用程序打印 bar。
第一个场景 运行 独立于第二个场景,但第二个场景依赖于第一个场景。每次调用 keypress event
时,3 秒计时器都应重置。在执行这两个方法之一后,应用程序应该 return 进入应用程序等待这两个事件之一再次发生的状态。
代码可能类似于以下内容
@override
public void onPress(int i){
System.out.print("foo");
}
public void printBar(){
if(timeElapsed > 3){
System.out.print("bar");
}
}
所以当按键被按下时,on press 事件应该正常发生,但是 printBar 应该只在最近执行最近的 keyPress 后 运行 3 秒。每次执行按键都应重置 printBar 计时器。感谢您的帮助,如果我能提供更好的信息,请告诉我。
让我大致介绍一下如何执行此操作。
我假设您的按键方法工作正常(按下按键时总是打印 foo)。你现在需要解决的,是如何重置定时器。
不知道你用的是什么定时器。但我猜是因为该应用程序与按键事件有关,并且可能您正在使用 swing。我建议您使用 java.swing.Timer
.
使用摆动计时器可以很容易地知道已经过了多少时间。
final Timer t = new Timer (3000, new ActionListener() {
public void actionPerformed (ActionEvent e) {
System.out.println("bar");
}
});
这个很简单。 3000 表示 3000 毫秒或 3 秒。当 s 秒过去时,actionPerformed
被执行。在actionPerformed
中,您可以只调用您的printBar
(不检查!)或者您可以调用System.out.println
来满足要求。
现在我们已经设置好了,我们要如何重置它?
幸运的是,Timer
class 提供了一个非常有用的方法,称为 restart
。在您的 onPress
方法中,只需调用此方法
@Override
public void onPress () {
System.out.println("foo");
t.restart();
}
砰!你做到了!
我正在开发一个依赖于用户按键和基于时间的事件的应用程序。这些方法将 运行 在两种情况下:
1: 如果用户按下某个键,应用程序将打印 foo.
2: 如果经过 3 秒,则应用程序打印 bar。
第一个场景 运行 独立于第二个场景,但第二个场景依赖于第一个场景。每次调用 keypress event
时,3 秒计时器都应重置。在执行这两个方法之一后,应用程序应该 return 进入应用程序等待这两个事件之一再次发生的状态。
代码可能类似于以下内容
@override
public void onPress(int i){
System.out.print("foo");
}
public void printBar(){
if(timeElapsed > 3){
System.out.print("bar");
}
}
所以当按键被按下时,on press 事件应该正常发生,但是 printBar 应该只在最近执行最近的 keyPress 后 运行 3 秒。每次执行按键都应重置 printBar 计时器。感谢您的帮助,如果我能提供更好的信息,请告诉我。
让我大致介绍一下如何执行此操作。
我假设您的按键方法工作正常(按下按键时总是打印 foo)。你现在需要解决的,是如何重置定时器。
不知道你用的是什么定时器。但我猜是因为该应用程序与按键事件有关,并且可能您正在使用 swing。我建议您使用 java.swing.Timer
.
使用摆动计时器可以很容易地知道已经过了多少时间。
final Timer t = new Timer (3000, new ActionListener() {
public void actionPerformed (ActionEvent e) {
System.out.println("bar");
}
});
这个很简单。 3000 表示 3000 毫秒或 3 秒。当 s 秒过去时,actionPerformed
被执行。在actionPerformed
中,您可以只调用您的printBar
(不检查!)或者您可以调用System.out.println
来满足要求。
现在我们已经设置好了,我们要如何重置它?
幸运的是,Timer
class 提供了一个非常有用的方法,称为 restart
。在您的 onPress
方法中,只需调用此方法
@Override
public void onPress () {
System.out.println("foo");
t.restart();
}
砰!你做到了!