Jayatanaを使用して、Java Swingアプリケーションのグローバルメニューを有効にできることを知っています。しかし、JavaFXアプリケーションのグローバルメニューサポートを探しています。それを検索した後、JavaFXで setUseSystemMenuBar を使用して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:グローバルシステムメニューバーサポートの実装
この問題を解決する回避策はありますか?
コードを見ると、私は経験豊富なFX開発者ではありませんが、「root.setTop(menuBar);」という行のように見えます。合計表示の一番上の行ではなく、コンテナの一番上にメニューバーを配置しています。他のコマンドが必要だと思います。 Java AWTとSwingの経験しかなく、間違っている可能性があります。
まだ解決していない場合。 UIの設計に別のfxmlファイルを使用してみてください。同じためにシーンビルダーを使用します。 Scene builder 、同じものを here からダウンロードします。
私はubuntu 16.04で同じことを試しましたが、うまくいきます。それが役に立てば幸い。