我需要获得当前活动窗口.我用过KeyboardFocusManager,用于获取活动窗口.但我得到活动窗口是null.下面是代码.请提供任何方式来获取当前活动窗口.
KeyboardFocusManager currentManager = KeyboardFocusManager.getCurrentKeyboardFocusManager();
Window activeWindow = currentManager.getActiveWindow();
Run Code Online (Sandbox Code Playgroud)
这一行代码应该有效:
Window activeWindow = javax.swing.FocusManager.getCurrentManager().getActiveWindow();
Run Code Online (Sandbox Code Playgroud)
来自JavaDoc:
如果活动Window与调用线程位于同一上下文中,则返回活动Window .只有一个框架或一个对话框可以是活动窗口.本机窗口系统可以表示具有特殊装饰的活动窗口或其子窗口,例如突出显示的标题栏.活动窗口始终是聚焦窗口,或者是聚焦窗口所有者的第一个框架或对话框.
要获得GlobalActiveWindow,请致电:
javax.swing.FocusManager.getCurrentManager().getGlobalActiveWindow();
Run Code Online (Sandbox Code Playgroud)
JavaDoc的:
返回活动Window,即使调用线程与活动Window位于不同的上下文中.只有一个框架或一个对话框可以是活动窗口.本机窗口系统可以表示具有特殊装饰的活动窗口或其子窗口,例如突出显示的标题栏.活动窗口始终是聚焦窗口,或者是聚焦窗口所有者的第一个框架或对话框.
注意: 当您的应用程序没有焦点时,此方法返回null!
干杯!
找到以下代码,它对我来说效果很好:
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;
}
Run Code Online (Sandbox Code Playgroud)
static您可以使用类的方法这样调用它Window:
Window w = getSelectedWindow(Window.getWindows());
Run Code Online (Sandbox Code Playgroud)
祝你好运。
差点忘了提,我在这个网站找到了递归方法。
| 归档时间: |
|
| 查看次数: |
8212 次 |
| 最近记录: |