gpt4 book ai didi

JavaFX 应用程序菜单

转载 作者:行者123 更新时间:2023-12-04 20:36:05 24 4
gpt4 key购买 nike

因此,我环顾四周,但找不到有关如何在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com