在多个JFrame之间转移焦点

时间:2018-04-16 08:24:59

标签: java swing focus

我目前正在为我们的应用程序开发其他功能:辅助框架,其中包含当前上下文(以及某些操作)的一些重要附加信息。此帧通常显示在第二个监视器上,因此用户可以看到两个帧。因为键盘控制非常重要,所以我需要在放置在不同帧中的组件之间传递焦点。 Java提供方法Component#requestFocus()但不建议使用它。我找到了另一个解决方案

public static boolean focusComponent(Component toFocus) {
    Window oldWindow = KeyboardFocusManager.getCurrentKeyboardFocusManager().getActiveWindow();
    Window newWindow = toFocus instanceof Window ? (Window) toFocus : SwingUtilities.getWindowAncestor(toFocus);
    if (newWindow != null && newWindow.isVisible() && !newWindow.equals(oldWindow)) {
        // when component placed in a non-active window
        if (newWindow instanceof JFrame) {
            // deiconify frame when required
            JFrame frame = (JFrame) newWindow;
            if ((frame.getExtendedState() & Frame.ICONIFIED) > 0) {
                frame.setExtendedState(frame.getExtendedState() & ~Frame.ICONIFIED);
            }
        }
        newWindow.toFront();
    }
    return toFocus.requestFocusInWindow();
}

我的问题是,我应该使用什么来转移放置在不同框架中的组件之间的焦点:此解决方案,Component#requestFocus()或其他什么?

0 个答案:

没有答案