Глобальне меню програм 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: Реалізація підтримки глобальної панелі меню системи

Чи є якісь шляхи вирішення цієї проблеми?


Ви ще дізналися?
Сократ

@Socrates ще не.
Гобінат

Відповіді:


1

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


0

Якщо вже не вирішено. Ви можете спробувати використовувати окремий файл fxml для проектування інтерфейсу користувача. Використовуйте конструктор сцен для того ж. Сцена конструктор , скачайте те ж саме звідси .

Я спробував те ж саме в ubuntu 16.04, і він працює чудово. Сподіваюся, це допомагає.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.