【发布时间】:2012-04-29 05:56:21
【问题描述】:
我希望我的 GUI 在出现 JOptionPane 时进行一些检查。 因为我找不到任何其他方式,我虽然每次应用程序窗口失去焦点时都可以这样做(它只是检查一个字符串)。出于这个原因,我在我的 JFrame 上添加了以下代码:
appFrame.addWindowListener(new WindowAdapter() {
@Override
public void windowLostFocus(WindowEvent e) {
System.out.println("Focus Lost");
}
@Override
public void windowClosing(WindowEvent e) {
//some other stuff here that work
}
});
窗口关闭监听器工作正常。虽然当 JFrame 没有聚焦时,什么也没有发生。每次我从 JFrame 切换到其他窗口时,不应该打印“Focus Lost”吗?另外,显示JOptionPane时会触发这个方法吗?
【问题讨论】:
-
这似乎是一种倒退的方式。什么触发 optionPane 显示?为什么不在此触发器中调用此代码?
-
当在应用程序的其他部分发现字符串重复时显示 JOptionPane(与 GUI 没有任何关系)。从该 JOptionPane 中,String 发生了变化,并且该变化需要反映在 JFrame 标题上。由于这些类不进行通信,我认为窗口侦听器将是检查该更改的一种简单方法。
-
也许说明操作系统在这里会很有用...我不确定 Windows 是否会向窗口发送消息以告知它不再处于活动状态(或者 JVM 是否处理它)
-
它在 OSX 上无法运行,但我更感兴趣的是它可以在 Windows 上运行。
-
“从那个 JOptionPane 改变了一个字符串” 使目标框架成为
JOptionPane的所有者/组件,并在字符串消失后立即更改它。顺便说一句-我和其他人可能仍然不清楚您的问题。用更具体的术语来解释这一点可能会有所帮助,比如描述字符串中的内容、它支持的功能......
标签: java swing jframe listener