如何查看使用 MouseListener 按住 JButton 的时间
How to see how long a JButton is held down for using a MouseListener
我有一个简单的class:
public class MyButton extends JToggleButton {
public MyButton() {
super();
this.addMouseListener(new MouseAdapter() {
public mousePressed(MouseEvent event) {
// See if it has been pressed for two seconds here
}
}
});
}
我只想在用户按住两秒钟后打印 "Hello World!"
。
您可以使用 Swing Timer 来实现它,该 Swing Timer 在 mousePressed
开始并在 X 秒后触发,但在 onMouseReleased
.
停止
考虑这个 class:
public class ClickHoldMouseListener extends MouseAdapter {
private Timer fireTimer;
private MouseEvent lastEvent;
public ClickHoldMouseListener(int holdTime, Consumer<MouseEvent> eventConsumer) {
fireTimer = new Timer(holdTime, e -> eventConsumer.accept(lastEvent));
fireTimer.setRepeats(false);
}
@Override
public void mousePressed(MouseEvent e) {
lastEvent = e;
fireTimer.restart();
}
@Override
public void mouseReleased(MouseEvent e) {
fireTimer.stop();
}
}
现在,您可以将它添加到您的按钮中:
JButton button = new JButton("button");
button.addMouseListener(new ClickHoldMouseListener(2000, (event) -> {
System.out.println("Mouse click was hold for 2seconds.");
}));
注意注入的事件是mousePressed
方法中的鼠标事件。您可以将消费者更改为 Runnable
以忽略事件,或更改为 Consumer<ActionEvent>
以捕获计时器事件。
我有一个简单的class:
public class MyButton extends JToggleButton {
public MyButton() {
super();
this.addMouseListener(new MouseAdapter() {
public mousePressed(MouseEvent event) {
// See if it has been pressed for two seconds here
}
}
});
}
我只想在用户按住两秒钟后打印 "Hello World!"
。
您可以使用 Swing Timer 来实现它,该 Swing Timer 在 mousePressed
开始并在 X 秒后触发,但在 onMouseReleased
.
考虑这个 class:
public class ClickHoldMouseListener extends MouseAdapter {
private Timer fireTimer;
private MouseEvent lastEvent;
public ClickHoldMouseListener(int holdTime, Consumer<MouseEvent> eventConsumer) {
fireTimer = new Timer(holdTime, e -> eventConsumer.accept(lastEvent));
fireTimer.setRepeats(false);
}
@Override
public void mousePressed(MouseEvent e) {
lastEvent = e;
fireTimer.restart();
}
@Override
public void mouseReleased(MouseEvent e) {
fireTimer.stop();
}
}
现在,您可以将它添加到您的按钮中:
JButton button = new JButton("button");
button.addMouseListener(new ClickHoldMouseListener(2000, (event) -> {
System.out.println("Mouse click was hold for 2seconds.");
}));
注意注入的事件是mousePressed
方法中的鼠标事件。您可以将消费者更改为 Runnable
以忽略事件,或更改为 Consumer<ActionEvent>
以捕获计时器事件。