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:
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?
Réponses:
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.
la source
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.
la source