我试图使用 https://github.com/codecentric/NSMenuFX 中的 NSMenuFX
使 JavaFX 应用程序使用 MacOS 系统菜单栏,但它不起作用,因为此方法始终返回 false
。
Toolkit.getToolkit().getSystemMenu().isSupported()
该方法来自包:com.sun.javafx.tk.Toolkit
。
深入研究代码,我发现 Toolkit.getToolkit().getSystemMenu().isSupported()
调用了 com.sun.glass.ui.Application< 中的方法
也总是返回 false。
protected boolean _supportsSystemMenu() {
return false;
}
public final boolean supportsSystemMenu() {
checkEventThread();
return this._supportsSystemMenu();
}
这段代码有问题吗?我如何使用系统菜单栏获取 JavaFX 应用程序。
注意:OSX 10.12.3 上使用的 JDK 是 8u121。
编辑1:根据评论中的建议,这里是一些代码。
import javafx.scene.control.MenuBar;
public class MyappMenuBar extends MenuBar {
// member variables -------------------------------------------------------------------------
private final MyappPane mmyappPane;
public MyappPane getMyappPane() {return mMyappPane;}
private final MyappHelpMenu mHelpMenu;
public MyappHelpMenu getHelpMenu() {return mHelpMenu;}
// constructors -----------------------------------------------------------------------------
public myappMenuBar(MyappPane pMyappPane) {
mMyappPane = pMyappPane;
setUseSystemMenuBar(true);
mHelpMenu = new MyappHelpMenu(pMyappPane);
getMenus().add(mHelpMenu);
}
}
最佳答案
问题是由启动屏幕 (java -splash:../img.png) 引起的,因为它是 AWT 功能而不是 JavaFX
功能,似乎没有什么可以帮助结合 AWT
和 JavaFX 线程一起在一个线程中,并且 -Djavafx.embed.singleThread=true
似乎不起作用。
目前,我刚刚禁用了启动屏幕,我计划将其从应用程序内实现为 JavaFX Pane 。
关于java - OSX 系统菜单栏在 JavaFX 中不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42157377/