我尝试使用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);
}
}
答案 0 :(得分:1)
问题是由启动画面(java -splash:../ img.png)引起的,因为它是一个AWT功能而不是JavaFX
功能,似乎没有任何东西可以帮助组合{{1}和JavaFX线程在一个线程中并且AWT
似乎不起作用。
现在我只是禁用了启动画面,我计划在应用程序中将其作为JavaFX Pane实现。