4 votes

JavaFX : Problème avec useSystemMenuBar lors du démarrage avec l'option -splash

J'utilise OpenJFX sous Mac OS X et j'ai observé un comportement étrange de mon application.

Mon environnement est

Logiciel

Version

OS

OS X El Capitan (10.11.6)

Java

openjdk version "15" 2020-09-15
Environnement d'exécution OpenJDK AdoptOpenJDK (build 15+36)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 15+36, mixed mode, sharing)

OpenJFX

15.0.1

Mon application utilise la barre de menu système de Mac OS X en

menuBar.setUseSystemMenuBar(true)

Lorsque je démarre mon application en ligne de commande avec Java, tout fonctionne correctement. Lorsque j'ajoute l'option -splash au démarrage, le menu apparaît à l'intérieur de l'application au lieu du menu système de Mac OS.

Je pense qu'il s'agit d'un bogue de Java lui-même ou de Java FX, je n'en suis pas sûr.

Mon application de démonstration est construite à partir de deux classes

public class Launcher {
    public static void main(String[] args) {
        MyApp.runApp(args);
    }
}

y

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

public class MyApp extends Application {
    @Override
    public void start(Stage primaryStage) throws Exception {
        String javaVersion = System.getProperty("java.version");
        String javafxVersion = System.getProperty("javafx.version");
        Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");
        MenuBar menuBar = new MenuBar(new Menu("TEST"));
        menuBar.setUseSystemMenuBar(true);
        Scene scene = new Scene(new VBox(menuBar, new StackPane(l)), 640, 480);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void runApp(String[] args) {
        launch(args);
    }
}

Lorsqu'elle est invoquée sans -splash, l'application prend en charge la barre de menu du système.

My demo app with system menu bar

Lorsqu'il est invoqué avec l'option -splash, le menu est situé à l'intérieur de l'application.

My demo app ignoring system menu bar

Quelqu'un a-t-il observé un comportement similaire ? Savez-vous si un bogue a déjà été signalé contre Open Java ou Open JavaFX ? Je n'ai rien trouvé.

Quel est, selon vous, le meilleur projet contre lequel déposer un bogue, Open Java ou Open Java FX ?

Merci d'avance Thorsten

1voto

Thorsten Points 143

J'ai demandé aux développeurs du groupe de discussion Open FX et ils m'ont renvoyé à la parade des bogues de Java.

Il y a déjà un bogue ouvert dans la liste : https://bugs.openjdk.java.net/browse/JDK-8153381

Ce problème date de près de 5 ans, il est de priorité 4, il n'y a donc que peu de chances qu'il soit résolu rapidement.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X