在我的Swing应用程序中,我使用自定义模块来记录屏幕转换.
但是,我有点挂断了什么时候迫使录音停止.现在,我检查用户是否仍希望记录(意味着他们没有点击"停止"按钮),如果应用程序仍处于打开状态(关闭应用程序会导致录制正常停止).
问题是如果应用程序被推到其他应用程序后面或者最小化,录制将继续,导致录制"垃圾".当应用程序不再"在屏幕顶部"时,我需要停止录制.由于其他对话框和事物的出现,使用应用程序的焦点似乎不起作用.
建议?
您可能想尝试添加一个WindowListener并覆盖windowDeactivated()事件,当事件不再是根据操作系统的"活动窗口"时,应该调用该事件.
更新:
如果您认真确保您的子对话框和窗口由您的应用程序拥有(确保您将应用程序框架作为所有者传递),那么您可以使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
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,您将能够确定窗口焦点是否完全离开了应用程序,或者焦点是否刚刚更改为其他子窗口/对话框.
| 归档时间: |
|
| 查看次数: |
2087 次 |
| 最近记录: |