【问题标题】:Inactive Button Presses (Java Swing)非活动按钮按下 (Java Swing)
【发布时间】:2014-11-28 23:42:48
【问题描述】:
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 秒后没有按下任何东西?

【问题讨论】:

    标签: java swing jbutton actionlistener


    【解决方案1】:

    声明长按 = null;它的初始值为 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
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 2015-06-16
      • 1970-01-01
      • 1970-01-01
      • 2012-03-27
      • 2020-08-16
      相关资源
      最近更新 更多