Я знаю, что мы можем включить глобальное меню для 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);
}
}
Вывод:
Также существует отчет об ошибках относительно этой проблемы здесь: Gtk: Реализуйте глобальную поддержку панели системного меню
Там какие-либо обходные решения должны решить эту проблему?
Если не решенный уже. Можно попытаться использовать отдельный fxml файл для разработки UI. Используйте разработчика сцены для того же. Разработчик сцены, загрузите то же отсюда.
Я попробовал то же в человечности 16.04, и это хорошо работает. Надежда это помогает.
При рассмотрении кода, и я не опытный разработчик FX, но он похож на строку "root.setTop (строка меню)"; определяет местоположение строки меню наверху Вашего контейнера, не в верхнем ряду общего дисплея. Я думаю, что некоторая другая команда необходима. Я только имею Java AWT и опыт Swing и могу быть неправым.