我需要获得当前活动窗口。
我使用了KeyboardFocusManager
来获取活动窗口。但我得到活动窗口是null。
下面是代码。
请提供任何方式来获取当前活动窗口。
KeyboardFocusManager currentManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
Window activeWindow = currentManager.getActiveWindow();
答案 0 :(得分:5)
这一行代码应该有效:
Window activeWindow = javax.swing.FocusManager.getCurrentManager().getActiveWindow();
来自JavaDoc的:
如果活动窗口位于同一上下文中,则返回活动窗口 作为调用线程。只有一个框架或一个对话框可以是活动的 窗口。本机窗口系统可以表示活动窗口或其 有特殊装饰的孩子,如突出显示的标题栏。 活动窗口始终是聚焦窗口或第一个窗口 框架或对话框,它是焦点窗口的所有者。
获取 GlobalActiveWindow ,请致电:
javax.swing.FocusManager.getCurrentManager().getGlobalActiveWindow();
的JavaDoc:
返回活动Window,即使调用线程与活动Window位于不同的上下文中。只有一个框架或一个对话框可以是活动窗口。本机窗口系统可以表示具有特殊装饰的活动窗口或其子窗口,例如突出显示的标题栏。活动窗口始终是聚焦窗口,或者是聚焦窗口所有者的第一个框架或对话框。
注意:强> 当您的应用程序没有焦点时,此方法返回null!
干杯!
答案 1 :(得分:0)
找到以下代码,它对我来说很好:
Window getSelectedWindow(Window[] windows) {
Window result = null;
for (int i = 0; i < windows.length; i++) {
Window window = windows[i];
if (window.isActive()) {
result = window;
} else {
Window[] ownedWindows = window.getOwnedWindows();
if (ownedWindows != null) {
result = getSelectedWindow(ownedWindows);
}
}
}
return result;
}
你可以使用static
类的Window
方法这样调用它:
Window w = getSelectedWindow(Window.getWindows());
祝你好运。
几乎忘了提一下,我在this网站找到了递归方法。