我試圖使用https://github.com/codecentric/NSMenuFX中的NSMenuFX
來使JavaFX應用程序使用MacOS系統MenuBar,並且因爲此方法始終返回false
,所以它不起作用。OSX系統菜單欄不能在JavaFX中工作
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();
}
這段代碼有什麼問題嗎?我怎樣才能使用System菜單欄獲取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);
}
}
是否有使用外部庫的理由?不使用常規JavaFX'MenuBar'並調用['setUseSystemMenuBar(true)'](http://docs.oracle.com/javase/8/javafx/api/javafx/scene/control/MenuBar.html#setUseSystemMenuBar -boolean-)工作? –
@James_D實際上它沒有,「setUseSystemMenuBar(true)」沒有效果。 – josephino
它適合我。如果它不工作,你可能做錯了什麼...發佈一些代碼。 –