簡體   English   中英

僅在Swing應用程序中使用JavaFX觸摸事件

[英]Use only JavaFX touch events in Swing Application

有沒有辦法在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);
    }
}

FX郵件列表上的這個問題表明你不可能使用你所采用的方法,而是你需要創建一個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();
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM