java fx控制鼠标_如何实现javafx鼠标事件“推送和保持”?

只需使用PauseTransition作为“保持”的计时器.如果按下鼠标则启动它,如果它被释放或拖动则停止它.

import javafx.animation.PauseTransition;

import javafx.application.Application;

import javafx.event.EventHandler;

import javafx.scene.Node;

import javafx.scene.Scene;

import javafx.scene.input.MouseEvent;

import javafx.scene.layout.Pane;

import javafx.stage.Stage;

import javafx.util.Duration;

public class MousePressAndHoldTest extends Application {

@Override

public void start(Stage primaryStage) {

Pane root = new Pane();

addPressAndHoldHandler(root, Duration.seconds(1),

event -> System.out.println("Press and hold"));

primaryStage.setScene(new Scene(root, 400, 400));

primaryStage.show();

}

private void addPressAndHoldHandler(Node node, Duration holdTime,

EventHandler handler) {

class Wrapper { T content ; }

Wrapper eventWrapper = new Wrapper<>();

PauseTransition holdTimer = new PauseTransition(holdTime);

holdTimer.setOnFinished(event -> handler.handle(eventWrapper.content));

node.addEventHandler(MouseEvent.MOUSE_PRESSED, event -> {

eventWrapper.content = event ;

holdTimer.playFromStart();

});

node.addEventHandler(MouseEvent.MOUSE_RELEASED, event -> holdTimer.stop());

node.addEventHandler(MouseEvent.DRAG_DETECTED, event -> holdTimer.stop());

}

public static void main(String[] args) {

launch(args);

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值