仅在Swing应用程序中使用JavaFX触摸事件
发布时间:2020-05-25 16:33:39 所属栏目:Java 来源:互联网
导读:有没有办法在swing应用程序中使用 JavaFX触摸事件?目前我正在使用JFXPanel来捕获JavaFX事件,但是当我尝试获取事件时,我不会接收任何触摸事件而只接收鼠标事件.这是在Windows 8.1 Dell触摸屏上测试的. 更新:下面的代码是我用来获取事件的框架.此JFXPanel用作
|
有没有办法在swing应用程序中使用 JavaFX触摸事件?目前我正在使用JFXPanel来捕获JavaFX事件,但是当我尝试获取事件时,我不会接收任何触摸事件而只接收鼠标事件.这是在Windows 8.1 Dell触摸屏上测试的. 更新:下面的代码是我用来获取事件的框架.此JFXPanel用作Swing应用程序中的glasspane.这将为glasspane创建一个JFXPanel,它可以捕获所有事件. public class MouseEventRouter extends JFXPanel {
...
public ZeusMouseEventRouter(JMenuBar menuBar,Container contentPane) {
...
this._contentPane = contentPane;
this._contentPane.add(_JFXpanel);
this._contentPane.setVisible(true);
init();
}
private void init() {
pane = new VBox();
pane.setAlignment(Pos.CENTER);
Platform.runLater(this::createScene);
}
private void createScene() {
Scene scene = new Scene(pane);
...
scene.setOnTouchPressed(new EventHandler<javafx.scene.input.TouchEvent>() {
@Override public void handle(javafx.scene.input.TouchEvent event) {
System.out.println("tap down detected");
}
});
...
setScene(scene);
}
}
解决方法This question on the FX mailing list表示不可能使用你所采用的方法,而是你需要创建一个JavaFX阶段并使用SwingNode(Swing in FX)而不是JFXPanel(Swing中的FX)嵌入你的Swing应用程序.我没有任何支持触控的硬件来测试这个,但我希望以下工作…… public class TouchApp extends Application {
public static void main(String[] args) {
launch(args);
}
@Override
public void start(Stage primaryStage) throws Exception {
JPanel swingContent = new JPanel();
swingContent.add(new JButton("Hello world"));
swingContent.add(new JScrollBar());
BorderPane content = new BorderPane();
SwingNode swingNode = new SwingNode();
swingNode.setContent(swingContent);
content.setCenter(swingNode);
Scene scene = new Scene(content);
scene.setOnTouchPressed((e) -> {
System.out.println(e);
});
primaryStage.setScene(scene);
primaryStage.show();
}
} (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
