JavaFX 应用程序菜单

标签 javafx menu

因此,我环顾四周,但找不到有关如何在 JavaFX 中制作应用程序菜单的任何信息。

我看过一个项目' Jayatana ' 这似乎允许应用程序在至少使用 Intellij 的 Ubuntu 中拥有正确的应用程序菜单(例如)。

我还看到了一些建议,即使用以下内容对 OS X 用户有效:-

final List<MenuBase> menus = new ArrayList<>();
menus.add(GlobalMenuAdapter.adapt(menu));
Toolkit.getToolkit().getSystemMenu().setMenus(menus);

还有NSMenuFX项目,同样适用于 OS X。

我还看到了 java-gnome我认为仅适用于 Swing 的项目。

但我真正喜欢的是某种制作应用程序菜单的方法,最好以非操作系统特定的方式。

我很高兴使用第三方 jar 或任何可以完成繁重工作的东西,但真的,这样的东西存在吗?

在这一点上,我最好的选择是使用 Swing 创建 JavaFX 应用程序的 shell ,并使用将应用程序菜单与 Swing 集成的方法?如果是这种情况,是否可以从 JavaFX 自动执行此操作并处理不同实现的切换?

编辑

最后,我只是将 Swing 和 JavaFX 结合使用。我将 JavaFX 应用程序放入其中,允许我使用已经在 Swing 中工作的应用程序菜单。

不理想,但确实有效。

最佳答案

我想你只是在找 MenuBar.useSystemMenuBarProperty() .如果您在菜单栏上调用此方法,则如果平台支持系统菜单(例如 OS X),则菜单将不会出现在场景图中,而是用作系统菜单。

SSCCE:

import javafx.application.Application;
import javafx.application.Platform;
import javafx.scene.Scene;
import javafx.scene.control.Menu;
import javafx.scene.control.MenuBar;
import javafx.scene.control.MenuItem;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class SystemMenuExample extends Application {

    @Override
    public void start(Stage primaryStage) {
        MenuBar menuBar = new MenuBar();
        Menu menu = new Menu("File");
        MenuItem quit = new MenuItem("Quit");
        quit.setOnAction(e -> Platform.exit());
        menu.getItems().add(quit);
        menuBar.getMenus().add(menu);
        menuBar.setUseSystemMenuBar(true);

        BorderPane root = new BorderPane();
        root.setTop(menuBar);
        Scene scene = new Scene(root, 600, 600);
        primaryStage.setScene(scene);
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}

关于JavaFX 应用程序菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35351097/

相关文章:

javaFX jar 应用程序

java - 如何让 JavaFX Timeline 以秒为单位增加并绑定(bind)到 Progressbar?

javafx - 通过 java 在 JavaFX Web View 中设置文件输入的值

linux - 在bash中创建一个zenity菜单

android - 项目未显示在操作栏上

javascript - 如何在此菜单中从右到左更改类别

javascript - 仅基于 CSS 的水平多级菜单

java - 使用在另一个文件中建立的连接

java - 鼠标离开时菜单颜色变化

user-interface - Powershell - GUI 和菜单条