JAVA如何监测按住按钮的事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA如何监测按住按钮的事件相关的知识,希望对你有一定的参考价值。

我是java的初学者,刚学swing里单击button的事件,还没学其他事件。假如我想做一个计时器,按住一个按钮计时,然后放开这个按钮停止计时,记录按住按钮的时间,请问这怎么实现。谢谢

代码如下:

import java.awt.EventQueue;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.time.Duration;
import java.time.Instant;

import javax.swing.JButton;
import javax.swing.JFrame;

public class MyFrame extends JFrame

    private static final long serialVersionUID = 1L;
    public Instant start;
    public Instant end;
    
    public MyFrame()
    
        setSize(300, 200);
        setTitle("Test");
        setLocationRelativeTo(null);
        setLayout(null);
        setDefaultCloseOperation(EXIT_ON_CLOSE);
        
        JButton btn = new JButton("BUTTON");
        btn.setBounds(100, 60, 100, 40);
        btn.addMouseListener(new MouseAdapter()
        
            @Override
            public void mousePressed(MouseEvent e)
            
                start = Instant.now();
            

            @Override
            public void mouseReleased(MouseEvent e)
            
                end = Instant.now();
                System.out.println("总用时:" + Duration.between(start, end).toMillis() + "毫秒");
            
        );
        add(btn);
    
    
    public static void main(String[] args)
    
        EventQueue.invokeLater(() ->
        
            try
            
                MyFrame frame = new MyFrame();
                frame.setVisible(true);
            
            catch (Exception e)
            
                e.printStackTrace();
            
        );
    

按下按钮,再松开鼠标之后,总用时将被打印在控制台上,单位是毫秒,你可以设置其他单位

参考技术A 给按钮注册鼠标事件监听器,实现鼠标按下方法,获取当前时间。再实现鼠标松开方法,再获取时间,计算时间差即可。
大概这样。查看API就会啦

如何识别按住按钮 iPhone SDK

【中文标题】如何识别按住按钮 iPhone SDK【英文标题】:How to Recognize a Hold Button iPhone SDK如何识别按住按钮 iPhone SDK 【发布时间】:2010-05-21 16:55:31 【问题描述】:

嗨,我有一个按钮,我想按住这个按钮写点东西,但我不知道如何识别按住按钮,你能帮我吗?谢谢你

【问题讨论】:

【参考方案1】:

TouchDownInside 事件触发,启动一个 NStimer。 TouchUpInside 事件触发,取消定时器。 如果用户按住按钮,则让计时器调用您的方法来执行:计时器延迟将是识别按住所需的时间。

【讨论】:

【参考方案2】:

您也可以使用UILongPressGestureRecognizer。

在您的初始化方法中(例如viewDidLoad),创建一个手势识别器并将其附加到您的按钮:

UILongPressGestureRecognizer *gesture = [[UILongPressGestureRecognizer alloc] 
  initWithTarget:self 
  action:@selector(myButtonLongPressed:)];
// you can control how many seconds before the gesture is recognized  
gesture.minimumPressDuration = 2; 
// attach the gesture to your button
[myButton addGestureRecognizer:gesture];
[gesture release];

事件处理程序myButtonLongPressed: 应如下所示:

- (void) myButtonLongPressed:(UILongPressGestureRecognizer *)gesture

  // Button was long pressed, do something

请注意,UILongPressGestureRecognizer 是 continuous event recognizer。 当用户仍然按住按钮时,myButtonLongPressed: 将被多次调用。 如果你只是想处理第一个电话,你可以在myButtonLongPressed:查看状态:

if (gesture.state == UIGestureRecognizerStateBegan) 
  // Button was long pressed, do something

【讨论】:

以上是关于JAVA如何监测按住按钮的事件的主要内容,如果未能解决你的问题,请参考以下文章

如何监测 QT 信号?

pyHook 监测键盘鼠标事件等

localstorage 更新监测 storage事件

如何利用 Elastic 可观测性监测容器化的 Kafka

监测c3动画过渡完成的事件

自然语言处理在金融实时事件监测和财务快讯中的应用