java - 在诊断 Swing 中 alt-tab 上的绘画问题时需要帮助

标签 java windows swing windowlistener

我已经研究了几个小时了,但没有找到任何可以指导我的方法。我有一个 Windows Swing GUI 程序,它在 SwingWorker 中执行一些后台处理。这也使用进度对话框让用户知道后台处理需要多长时间。

该系统的最初设计者决定禁用用户界面的鼠标和键盘输入,但进度对话框上的“取消”按钮除外。他们通过使用忽略所有鼠标和键盘事件的玻璃板来做到这一点。

实际问题是,如果用户使用 alt-tabs 或屏幕保护程序,则玻璃面板后面的用户界面永远不会重新绘制。进度对话框重绘,但这是由于 SwingWorker 定期调用重绘来更新进度。

我想知道下一步要去哪里的任何建议。我无法在 Java 中的 alt-tab 重绘上找到任何内容。也许进度对话框根据定义是模态的,防止 EDT 重新绘制?或者玻璃板可能会阻止“隐藏”组件的重绘?

谢谢, 瑞安

最佳答案

文章How to Write Window Listeners涵盖了这个主题。使用这个 example ,您应该在每个 alt-tab 事件上看到成对的窗口事件,类似于这些:

java.awt.event.WindowEvent[WINDOW_LOST_FOCUS,opposite=null,oldState=0,newState=0] on One
java.awt.event.WindowEvent[WINDOW_DEACTIVATED,opposite=null,oldState=0,newState=0] on One
java.awt.event.WindowEvent[WINDOW_ACTIVATED,opposite=null,oldState=0,newState=0] on One
java.awt.event.WindowEvent[WINDOW_GAINED_FOCUS,opposite=null,oldState=0,newState=0] on One

关于java - 在诊断 Swing 中 alt-tab 上的绘画问题时需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4653754/

相关文章:

java - 有没有办法可以更改文本的打印颜色?

c++ - 用于在运行时记录调用堆栈的库 (Windows/Linux)

c++ - 关闭任何句柄后,CreateFile FILE_FLAG_DELETE_ON_CLOSE 失败

java - InputStream 问题 - Android

java - Glassfish Web服务高并发

java - 当运行不应该运行的代码时,我应该抛出什么异常?

java - 从java执行.exe文件

java - JButton - 如何连接?

Java 形式的未修饰 jframe 中的 Java 相对定位 swing 组件

java - 是否可以将 String 变量作为参数传递给 new ImageIcon() ?