JavaFX应用程序的全局菜单


14

我知道我们可以使用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);
    }
}

输出:

Ubuntu中的JavaFX菜单

这里也有关于此问题的错误报告:Gtk:实现全局系统菜单栏支持

有解决此问题的解决方法吗?


你知道了吗
苏格拉底

@Socrates还没有。
Gobinath

Answers:


1

查看代码,我不是经验丰富的FX开发人员,但看起来像“ root.setTop(menuBar);”行。菜单栏位于容器的顶部,而不是总显示的第一行。我认为其他命令是必要的。我只有Java AWT和Swing经验,可能是错误的。


0

如果尚未解决。您可以尝试使用单独的fxml文件来设计UI。同样使用场景生成器。 场景生成器,可从此处下载相同的内容。

我已经在ubuntu 16.04中尝试了相同的方法,并且工作正常。希望能帮助到你。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.