请问在 Java 中,是否有一种直接检查鼠标按钮是否按下的方法,而不需要使用事件、监听器等方式?我想要创建一个线程,在每隔 100 毫秒左右检查鼠标按钮是否按下,并执行相应操作。因此,如果用户长时间按住鼠标按钮,则会触发多个响应。
因此,我正在寻找一种方法来获取鼠标状态,而无需通过常规的事件处理系统。
谢谢
请问在 Java 中,是否有一种直接检查鼠标按钮是否按下的方法,而不需要使用事件、监听器等方式?我想要创建一个线程,在每隔 100 毫秒左右检查鼠标按钮是否按下,并执行相应操作。因此,如果用户长时间按住鼠标按钮,则会触发多个响应。
因此,我正在寻找一种方法来获取鼠标状态,而无需通过常规的事件处理系统。
谢谢
我认为在Java中这是不可能的。虽然通过JNI是可以实现的,但那会让人非常头痛。
使用事件来实现并不难,并且会更好地与您的应用程序集成。以下是一个示例,在鼠标按钮按下时每100毫秒向控制台写入一次:
import javax.swing.*;
import java.awt.event.*;
public class Test {
public static void main(String[] args) {
JFrame frame = new JFrame();
final JLabel label = new JLabel("Click on me and hold the mouse button down");
label.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
frame.getContentPane().add(label);
label.addMouseListener(new TimingMouseAdapter());
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
private static class TimingMouseAdapter extends MouseAdapter {
private Timer timer;
public void mousePressed(MouseEvent e) {
timer = new Timer(100, new ActionListener() {
public void actionPerformed(ActionEvent e) {
System.out.println("Mouse still pressed...");
}
});
timer.start();
}
public void mouseReleased(MouseEvent e) {
if (timer != null) {
timer.stop();
}
}
}
}
我不知道这是否可能 - 也许是可能的。
然而,你可以编写一个事件处理程序,其唯一工作就是跟踪当前鼠标状态。然后你的100毫秒代码只需要查询它即可。