3

私はこれをインターネット全体で検索しており、スタックオーバーフローの回答からスタックオーバーフローの回答、rococoaの試行、またはClass.forName ("com.apple.cocoa.application.NSApplication");他のものに移動しています。

肝心な点は、私の Java アプリケーションを OSX に集中させる方法を理解できないということです。

はっきりさせておきますが、私のアプリケーションにはウィンドウがありません (将来的にはそうなりますが、ウィンドウがまったくない場合もあります)。Windows に依存しないアプリケーションにフォーカスする方法が必要です。

何も見つからなかったので、ウィンドウがあることに依存する解決策を試すことにしました。

private static void BringSelfToFocus()
{
    java.awt.EventQueue.invokeLater(new Runnable()
    {
        @Override
        public void run()
        {
            Window window = new JFrame("Test");
            window.toFront();
            window.repaint();
        }
    });
}

しかし、それは私の他のすべての無駄な試みと同様に失敗しました。

はい、これは技術的には重複した質問ですが、見つけることができる他のすべての回答を試しましたが、何らかの理由でどれも機能しませんでした.

どなたか、この問題について手を貸していただけませんか? ありがとうございました。

-ジョルジュ

4

1 に答える 1

5

良い!最終的なアイデアが 1 つありますが、うまくいきました。アップルスクリプトを使用しました。

private static void BringSelfToFocus()
{
    AppleScript("tell me to activate");
}


private static String AppleScript(String script)
{
    ScriptEngineManager mgr = new ScriptEngineManager();
    ScriptEngine engine = mgr.getEngineByName("AppleScript");

    if (engine != null) {
        try
        {
            return (String)engine.eval(script);
        }
        catch (ScriptException e)
        {
            e.printStackTrace();
        }
    }
    return null;
}
于 2013-03-15T07:14:38.690 に答える