非Java应用程序完成后重新获得关注

时间:2015-02-19 20:24:27

标签: java macos desktop

我的OS X独立Java程序使用

Desktop.getDesktop().open(f);    // Run the Tutorial.pdf file

运行客户端的默认PDF阅读器并显示文件。 Reader完成并将控制权返回给调用Java程序。但是,Java程序没有焦点。客户必须单击它才能获得焦点。 Java程序有没有办法重新获得关注?我已经尝试了几件事,但都需要关注程序的组件 - 而不是程序本身。

1 个答案:

答案 0 :(得分:0)

要激活您的应用程序窗口,请使用:

myFrame.toFront();

请务必将其换行以便在EDT上运行,例如SwingUtilities.invokeLater()

如果出于某些原因无效,您可以尝试:

myFrame.setAlwaysOnTop(true);
myFrame.setAlwaysOnTop(false);

如果仍然无效,您可以尝试使用AppleScript。

public class Test extends JFrame {

    public Test() {
        setSize(100, 100);
        setVisible(true);
    }



    public static void main(final String[] args) {
        final Timer timer = new Timer();

        final Test test = new Test();

        final TimerTask timerTask = new TimerTask() {

            @Override
            public void run() {
                test.bringToFront();
            }
        };

        timer.schedule(timerTask, 5000, 5000);
    }



    private void bringToFront() {
        final ScriptEngineManager mgr = new ScriptEngineManager();
        final ScriptEngine engine = mgr.getEngineByName("AppleScript");

        try {
            engine.eval("tell me to activate");
        } catch (final ScriptException ex) {
            ex.printStackTrace();
        }
    }
}