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

Я знаю, что мы можем включить глобальное меню для 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 Menu in Ubuntu

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

Там какие-либо обходные решения должны решить эту проблему?

14
задан 23 February 2018 в 05:53

2 ответа

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

Я попробовал то же в человечности 16.04, и это хорошо работает. Надежда это помогает.

0
ответ дан 23 November 2019 в 03:07

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

1
ответ дан 23 November 2019 в 03:07

Другие вопросы по тегам:

Похожие вопросы: