String tempNum="";
public void actionPerformed(ActionEvent event)
{
JButton src = (JButton) event.getSource();
if(src.equals(one))
{
if (pressed + 3000 > System.currentTimeMillis()) // user press > 3 seconds
{
tempNum = tempNum + "1";
//do a command
}
else //new
{
pressed = System.currentTimeMillis();
tempNum="";
tempNum = tempNum + "1";
//do a command
}
}
}
你好。在此程序中,用户将按 JButton one
.用户在 3 秒内连续按 one
并将字符串"1"附加到tempNum
。当用户在 3 秒后按另一个one
时,tempNum
将只有一个值"1"。我的问题是:最初,当用户按下一个全新的"1"时,如何检测用户是否处于非活动状态 3 秒?
例如:
输入:用户输入:1
如何检测用户在 3 秒后是否未按下任何内容?
声明长按 = 空;它的初始值将为 null,表示用户尚未按下按钮。
/**
* Declare pressed as Long pressed = null; in your code for the following to work as intended.
*/
StringBuilder tempNum = new StringBuilder();
String TO_ADD = "1";
int presses = 0 ;
int SECONDS = 3 ;
public void actionPerformed(ActionEvent event)
{
JButton src = (JButton) event.getSource();
/**
* Do call System.currentTimeMillis() once at the beginning and store it's value as later calls System.currentTimeMillis() could return later time.
*/
long pressTime = System.currentTimeMillis();
if(src.equals(one))
{
/**
* No press was done
*/
if (null == pressed)
{
pressed = pressTime;
}
if (pressed + SECONDS*1000 > pressTime) // user press > 3 seconds
{
presses++;
//do a command
}
else //new
{
pressed = pressTime;
presses = 1 ;
tempNum = new StringBuilder();
//do a command
}
tempNum.append(TO_ADD); //to get string call tempNum.toString(); in your code
}
}