Globales Menü für JavaFX-Anwendungen


14

Ich weiß, dass wir mit Jayatana ein globales Menü für Java-Swing-Anwendungen aktivieren können. Aber ich suche nach globaler Menüunterstützung für JavaFX- Anwendungen. Nach der Suche darauf habe ich das SetUseSystemMenuBar gefunden in JavaFX verwendet wird, um die gleiche Art von Verhalten in Mac zu ermöglichen. Aber es funktioniert nicht in Ubuntu.

Mein Java Code:

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);
    }
}

Ausgabe:

JavaFX-Menü in Ubuntu

Außerdem gibt es hier einen Fehlerbericht zu diesem Problem: Gtk: Implementiere die Unterstützung der globalen Systemmenüleiste

Gibt es Problemumgehungen, um dieses Problem zu lösen?


Hast du es schon herausgefunden?
Sokrates

@Socrates noch nicht.
Gobinath

Antworten:


1

Wenn ich mir den Code ansehe, bin ich kein erfahrener FX-Entwickler, aber es sieht aus wie die Zeile "root.setTop (menuBar);" befindet sich die Menüleiste am oberen Rand Ihres Containers, nicht in der oberen Reihe der Gesamtanzeige. Ich denke, dass ein anderer Befehl notwendig ist. Ich habe nur Java AWT und Swing Erfahrung und kann mich irren.


0

Wenn nicht schon gelöst. Sie können versuchen, eine separate fxml-Datei zum Entwerfen der Benutzeroberfläche zu verwenden. Verwenden Sie hierfür den Scene Builder. Scene Builder , laden Sie das gleiche von hier .

Ich habe das gleiche in Ubuntu 16.04 versucht und es funktioniert gut. Ich hoffe es hilft.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.