Java将应用程序带到了前端(OSX)

时间:2013-03-15 06:48:08

标签: java macos window focus

我一直在网上搜索这个,从堆栈溢出答案到堆栈溢出答案,尝试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();
        }
    });
}
然而,就像我的其他任何徒劳的尝试一样,失败了。

所以,是的,虽然这在技术上是一个重复的问题,但我已经尝试了我能找到的每一个其他答案,无论出于何种原因,它们都没有奏效。

任何人都可以帮忙解决这个问题吗?三江源。

-Georges

1 个答案:

答案 0 :(得分:3)

嘛!我有一个最后的想法,它工作了!我使用了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;
}