4

ステータスバーにアイコンを表示するJavaアプリケーションをMacで作成しようとしていますが、Macドック(紙にコーヒーカップがあるもの)にjarアイコンは必要ありません。そこで、System.setProperty(java.awt.headless、true)手法を使用しようとしましたが、HeadlessExceptionが発生したため、SystemTrayメニューバーに何も入力できません。誰かがこれを回避する方法を知っているなら、助けていただければ幸いです。

4

2 に答える 2

4

それは簡単です...あなたが方法を知っていれば:)

まず、jarファイルをMacアプリケーションバンドルにラップします

次に、生成されたパッケージの内容に移動し、info.plistを開きます。LSUIElementプロパティを追加して1に設定するだけです。これにより、起動時にアプリケーションがドックから削除されます。こちらのアップルドキュメントも参照してください:http://developer.apple.com/library/ios/#documentation/general/Reference/InfoPlistKeyReference/Articles/LaunchServicesKeys.html


完全を期すために:これを行う別の方法もありますが、それははるかに苦痛です。ドックアイコンを動的に表示/非表示にできるcocoaコマンドがあります:SetSystemUIMode(https://developer.apple.com/library/mac/#documentation/Carbon/reference/Dock_Manager/Reference/reference.html) rococoaを使用してこのコマンドを呼び出すか、独自のjnilibを作成してください。あるいは、githubアカウントで非常によく似た-メニューバーを非表示にする-を実行するxcodeプロジェクトがあります:https ://github.com/kritzikratzi/jAppleMenuBar/ src /native/の一部のパラメーターを変更するだけで済みますjAppleMenuBar.mファイル。

于 2012-05-26T15:44:19.313 に答える
0

これにより、ドック内の何かが回避されます。

System.setProperty("apple.awt.UIElement", "true");

これにより、 https://docs.oracle.com/javase/tutorial/uiswing/misc/systemtray.htmlに示すように、トレイアイコンが追加されます。

//Check the SystemTray is supported
        if (!SystemTray.isSupported()) {
            System.out.println("SystemTray is not supported");
            return;
        }
        final PopupMenu popup = new PopupMenu();
        final TrayIcon trayIcon =
                new TrayIcon(createImage("images/bulb.gif", "tray icon"));
        final SystemTray tray = SystemTray.getSystemTray();

        // Create a pop-up menu components
        MenuItem aboutItem = new MenuItem("About");
        CheckboxMenuItem cb1 = new CheckboxMenuItem("Set auto size");
        CheckboxMenuItem cb2 = new CheckboxMenuItem("Set tooltip");
        Menu displayMenu = new Menu("Display");
        MenuItem errorItem = new MenuItem("Error");
        MenuItem warningItem = new MenuItem("Warning");
        MenuItem infoItem = new MenuItem("Info");
        MenuItem noneItem = new MenuItem("None");
        MenuItem exitItem = new MenuItem("Exit");

        //Add components to pop-up menu
        popup.add(aboutItem);
        popup.addSeparator();
        popup.add(cb1);
        popup.add(cb2);
        popup.addSeparator();
        popup.add(displayMenu);
        displayMenu.add(errorItem);
        displayMenu.add(warningItem);
        displayMenu.add(infoItem);
        displayMenu.add(noneItem);
        popup.add(exitItem);

        trayIcon.setPopupMenu(popup);

        try {
            tray.add(trayIcon);
        } catch (AWTException e) {
            System.out.println("TrayIcon could not be added.");
        }
于 2016-07-12T15:41:14.927 に答える