Глобальное меню для приложений JavaFX


14

Я знаю, что мы можем включить глобальное меню для приложений Java Swing, используя Jayatana. Но я ищу глобальную поддержку меню для приложений JavaFX . После поиска я обнаружил, что setUseSystemMenuBar используется в JavaFX для включения такого же поведения в Mac. Но это не работает в Ubuntu.

Мой код 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);
    }
}

Выход:

Меню JavaFX в Ubuntu

Также есть сообщение об ошибке по этой проблеме здесь: Gtk: Реализовать поддержку глобальной системной строки меню

Есть ли обходные пути для решения этой проблемы?


Вы уже узнали?
Сократ,

@ Сократа еще нет.
Гобинат,

Ответы:


1

Глядя на код, я не опытный разработчик FX, но он выглядит как строка "root.setTop (menuBar);" находится строка меню в верхней части вашего контейнера, а не в верхней строке общего отображения. Я думаю, что какая-то другая команда необходима. У меня есть только опыт Java AWT и Swing, и я могу ошибаться.


0

Если не решено уже. Вы можете попробовать использовать отдельный файл fxml для разработки пользовательского интерфейса. Используйте конструктор сцены для того же. Построитель сцен , скачайте то же самое здесь .

Я попробовал то же самое в Ubuntu 16.04, и он отлично работает. Надеюсь, это поможет.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.