如何实现javafx鼠标事件“按住”?

我正在开发一个javafx项目,我需要一些类似的触摸事件推动和保持,但我需要它作为一个鼠标事件,因为我在接触Linux和javafx的麻烦,我已经尝试了触摸事件,但Ubuntu不会回应触摸事件。 那么关于如何实现事件或者如何激活Linux上的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<MouseEvent> handler) { class Wrapper<T> { T content ; } Wrapper<MouseEvent> 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); } }