Mac OS Xシステムのメニュー名with / Java?
質問
わずかな問題があります。最近Macに移行してから、私は髪の毛を引っ張ってこれについてウェブを検索していましたが、まさに探していたものを見つけていませんでした。システムメニューでアプリケーション名を設定しますが、現時点では機能しません(アプリ名の代わりにメインクラス名が表示されます)。どのプロパティを変更する必要がありますか?
正しいapple.lafプロパティを使用してシステムメニューバーにメニューを配置しましたが、名前に必要なものが見つかりませんでした。
検索した結果、Info.plist文書が見つかりましたが、その文書にはまったく知識がありません。アプリの表示名を変更するだけの簡単なものを作成しようとしましたが、何らかの理由で機能しませんでした。ヘルプ?
解決
付属の Jar Bundler 。これは、これらすべてを処理するためにあります。特定の機能がどのように機能するかを確認したい場合は、Jar Bundlerの出力を調べることができます。
他のヒント
sunのドキュメントによると、仮想マシンに名前を渡します。 -Xdock:name =" {AppName}"
を使用してjavaコマンドのコマンドラインパラメーターとしてmachineを {AppName}
をタイトルとして表示するものに置き換えますメニューバーで。
編集: これを実際のJavaコード自体に設定できるとは思いませんが、チャックが言ったように、Appleには必要なInfo.plistでjarを作成するように設計されたプログラムJar Bundlerがあります。 ユーザーガイドによると必要なものを取得するには、プロパティペインで[バンドル名]プロパティを設定する必要があります。
2つの方法があります:
- 呼び出し時:java -Xdock:name = myAppName
-
実行時、GUIの相互作用の前:
System.setProperty("com.apple.mrj.application.apple.menu.about.name", "myAppName!");
提案されたJava(起動シェルスクリプトで-Dを使用)プロパティの設定は、AWT&専用であるため機能しませんでした。 Swing GUI。 Mac固有の -Xdock:*
オプションでも機能しませんでした。
このプロジェクトの使用は、 https://github.com/codecentric/NSMenuFX
メニューのJavaFX Controllerに次のスニペットを追加しました:
public void initialize() {
if ("Mac OS X".equals(System.getProperty("os.name"))) {
final MenuToolkit tk = MenuToolkit.toolkit();
final Menu defaultMacApplicationMenu = tk.createDefaultApplicationMenu("My App");
tk.setApplicationMenu(defaultMacApplicationMenu);
}
}
このライブラリを使用してメニュー自体の太字の名前を設定することはできませんが、アプリケーションバンドルの Info.plist
で CFBundleDisplayName
の設定を制御できます。