The strange things is that it works perfectly on Windows but not on Linux.
Is this a JavaFX bug?

I tried to format code better to make it more readable...

Stage stage = new Stage();
        Group root = new Group();
        Scene s = new Scene(root, 1920, 1080, Color.BLACK);
        GraphicsContext gc;
        Canvas canvas = new Canvas(1920,1080);
        gc = canvas.getGraphicsContext2D();
        canvas.setFocusTraversable(true);
        // Hide canvas on key pressed
        canvas.setOnKeyPressed(t -> {
            stage.setFullScreen(false);
            stage.hide();
        });
        drawThings(gc);
        root.getChildren().add(canvas);
        stage.setScene(s);
        // Show canvas on the correct display number
        Rectangle2D bounds = Screen.getScreens().get(1).getVisualBounds();
        stage.setX(bounds.getMinX());
        stage.setY(bounds.getMinY());
        stage.show();
        stage.setFullScreen(true);

Thanks
Davide


Il 14/10/2021 16:05, Davide Perini ha scritto:
Hi all,
I have a small piece of code that shows a canvas with JavaFX.

I want to display the canvas on the second screen.
This works well in Windows but not on Linux Ubuntu.

Stage stage =new Stage(); Group root =new Group(); Scene s =new Scene(root, 1920, 1080, Color.BLACK); GraphicsContext gc; Canvas canvas =new Canvas(1920,1080); gc = canvas.getGraphicsContext2D(); canvas.setFocusTraversable(true); // Hide canvas on key pressed canvas.setOnKeyPressed(t -> {     stage.setFullScreen(false); stage.hide(); }); drawThings(gc); root.getChildren().add(canvas); stage.setScene(s); // Show canvas on the second display Rectangle2D bounds = Screen.getScreens().get(1).getVisualBounds(); stage.setX(bounds.getMinX()); stage.setY(bounds.getMinY()); stage.show(); stage.setFullScreen(true);



On Linux the canvas is shown on the first screen.
I have tried swapping the screen index from

// Show canvas on the second display Rectangle2D bounds = Screen.getScreens().get(1).getVisualBounds();

to

// Show canvas on the second display Rectangle2D bounds = Screen.getScreens().get(0).getVisualBounds();

but same problem.

Any idea?

Thank you
Davide









Reply via email to