JavaFXアプリケーションのグローバルメニュー


14

Jayatanaを使用してJava Swingアプリケーションのグローバルメニューを有効にできることを知っています。しかし、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);
    }
}

出力:

UbuntuのJavaFXメニュー

また、この問題に関するバグレポートがここにあります:Gtk:グローバルシステムメニューバーサポートを実装します

この問題を解決するための回避策はありますか?


まだわかっていますか?
ソクラテス

@ソクラテスはまだありません。
ゴビナス

回答:


1

コードを見ると、私は経験豊富なFX開発者ではありませんが、「root.setTop(menuBar);」という行のように見えます。合計表示の一番上の行ではなく、コンテナの一番上にメニューバーを配置しています。他のコマンドが必要だと思います。Java AWTとSwingの経験しかなく、間違っている可能性があります。


0

まだ解決されていない場合。UIの設計に別のfxmlファイルを使用してみてください。同じためにシーンビルダーを使用します。 シーンビルダーこちらから同じものをダウンロードしてください

私はubuntu 16.04で同じことを試しましたが、うまくいきます。それが役に立てば幸い。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.