Menu global pour les applications JavaFX


14

Je sais que nous pouvons activer le menu global pour les applications Java Swing en utilisant Jayatana. Mais je recherche un support de menu global pour les applications JavaFX . Après avoir cherché, j'ai trouvé que setUseSystemMenuBar est utilisé dans JavaFX pour permettre le même type de comportement sur Mac. Mais cela ne fonctionne pas dans Ubuntu.

Mon code Java:

import javafx.application.*;
import javafx.scene.*;
import javafx.scene.control.*;
import javafx.scene.layout.*;
import javafx.scene.paint.*;
import javafx.stage.*;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        BorderPane root = new BorderPane();
        Scene scene = new Scene(root, 300, 250, Color.WHITE);

        MenuBar menuBar = new MenuBar();
        // Use system menu bar
        menuBar.setUseSystemMenuBar(true);
        menuBar.prefWidthProperty().bind(primaryStage.widthProperty());
        root.setTop(menuBar);

        Menu fileMenu = new Menu("File");

        Menu webMenu = new Menu("Web");

        Menu sqlMenu = new Menu("SQL");

        menuBar.getMenus().addAll(fileMenu, webMenu, sqlMenu);

        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

Production:

Menu JavaFX dans Ubuntu

Il y a aussi un rapport de bogue concernant ce problème ici: Gtk: implémente le support de la barre de menu du système global

Existe-t-il des solutions de contournement pour résoudre ce problème?


L'avez-vous déjà découvert?
Socrates

@Socrates pas encore.
Gobinath

Réponses:


1

En regardant le code, et je ne suis pas un développeur FX expérimenté, mais il ressemble à la ligne "root.setTop (menuBar);" est en train de localiser la barre de menus en haut de votre conteneur, pas dans la ligne supérieure de l'affichage total. Je pense qu'une autre commande est nécessaire. Je n'ai qu'une expérience Java AWT et Swing et je peux me tromper.


0

Si pas déjà résolu. Vous pouvez essayer d'utiliser un fichier fxml distinct pour concevoir l'interface utilisateur. Utilisez le générateur de scène pour la même chose. Générateur de scène , téléchargez le même à partir d' ici .

J'ai essayé la même chose dans Ubuntu 16.04 et cela fonctionne très bien. J'espère que cela aide.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.