我正在处理与此错误相关的问题:DefaultDesktopManager does not handle InternalFrame state changes as expected.
我有以下情况:
我的应用程序由JFrame
组成,可以有多个JInternalFrame
个。作为概述对话框,我有JInternalFrame
最大化并显示数据表。用户可以打开表中实体的详细信息对话框。详细信息对话框也是JInternalFrame
。
问题:由于概览对话框已最大化,因此详细信息对话框也会最大化(不符合预期)。
问题:当详细信息对话框关闭时,概述对话框将失去其最大化状态。如果用户点击此对话框中的任何一点,它将恢复最大化。这对用户来说非常丑陋和令人困惑。如果我在关闭之前“取消最大化”细节对话框,则概览对话框也会失去其最大化状态并保持此状态。
在我看来,JFrame
只能为其所有JInternalFrame
保留一个全局状态。我不知道如何为此创建一个简单的解决方法。也许过去有人遇到过这个麻烦,可以指导我。
提供SSCCE有点难,也许这就足够了,我正在通过这个显示详细信息对话框:
DetailDialog detailDialog = new DetailDialog();
applicationFrame.getDesktopPane().add(detailDialog);
detailDialog.setVisible(true);
答案 0 :(得分:1)
可能是问题
如果没有看到SSCCE
你期望从JInternalFrame[] getAllFrames()获得什么输出,是否有一些???
你期望从Internal Frame Listener获得什么输出,是否有一些???
您是否将JInternalFrame放置到JLayeredPane ???
答案 1 :(得分:1)
我发现了自己的错误。我正在为对话框使用控制器类,并将对话框的关闭委托给该类。在控制器中,我必须做一些验证,然后我调用对话框的dispose()
。现在我打电话给setClosed(true)
而不是有效。我认为现在有一些被解雇的事件被解雇了。