非活动按钮按下(Java 摆动)


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
    }
}

最新更新