在我的 Swing 应用程序中,我使用自定义模块来录制屏幕录像。
但是,我对何时强制停止录制有点犹豫。现在,我检查用户是否仍希望录制(意味着他们没有单击“停止”按钮)以及应用程序是否仍处于打开状态(关闭应用程序会导致录制正常停止)。
问题是如果应用程序被推到其他应用程序后面或最小化,导致录制“垃圾”,录制将继续。当应用程序不再位于屏幕“顶部”时,我需要停止录制。由于其他对话框和弹出的内容,使用应用程序的焦点似乎不起作用。
建议?
最佳答案
您可能想尝试添加一个 WindowListener 并覆盖 windowDeactivated() 事件,根据操作系统,当框架不再是“Activity 窗口”时应该调用该事件。
更新:
如果您认真确保您的子对话框和窗口归您的应用程序所有(确保您作为所有者传入应用程序框架),那么您可以让您的 WindowListener 执行如下操作:
public void windowDeactivated(WindowEvent e) {
if(e.getOppositeWindow() == null){
// will be null when another application window gets activated, stop recording
}
for(Window w : appFrame.getOwnedWindows()){
if(w.equals(e.getOppositeWindow())){
// one of the windows owned by the frame is active, don't stop recording
}
}
}
然后您将能够确定窗口焦点是否完全离开了您的应用程序,或者焦点是否刚刚更改为不同的子窗口/对话框。
关于java - 使用 JFrame 的焦点(丢失)来停止录制截屏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1907917/