3

我一直在整个互联网上搜索这个,从堆栈溢出答案到堆栈溢出答案,尝试洛可可,或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

出色地!我有一个最终的想法,它奏效了!我使用了 Applescript。

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 回答