Globalne menu dla aplikacji JavaFX

14

Wiem, że możemy włączyć globalne menu dla aplikacji Java Swing za pomocą Jayatana. Ale szukam obsługi globalnego menu dla aplikacji JavaFX . Po przeszukaniu go odkryłem, że setUseSystemMenuBar jest używany w JavaFX do umożliwienia takiego samego zachowania na Macu. Ale to nie działa w Ubuntu.

Mój kod 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);
    }
}

Wynik:

Menu JavaFX w Ubuntu

Jest tu także raport o błędzie dotyczący tego problemu: Gtk: Zaimplementuj obsługę globalnego paska menu systemowego

Czy są jakieś obejścia tego problemu?

Gobinath
źródło
Dowiedziałeś się już?
Sokrates,
@Sokrates jeszcze nie.
Gobinath,

Odpowiedzi:

1

Patrząc na kod, nie jestem doświadczonym programistą FX, ale wygląda jak wiersz „root.setTop (menuBar);” lokalizuje pasek menu u góry kontenera, a nie w górnym rzędzie całego wyświetlacza. Myślę, że konieczne jest jakieś inne polecenie. Mam tylko Java AWT i Swing i może się mylić.

DeepExplorer
źródło
0

Jeśli jeszcze nie rozwiązany. Możesz spróbować użyć osobnego pliku fxml do zaprojektowania interfejsu użytkownika. Użyj tego samego konstruktora scen. Kreator scen , pobierz to samo stąd .

Próbowałem tego samego w Ubuntu 16.04 i działa dobrze. Mam nadzieję, że to pomoże.

mohammed thaha jk
źródło