JInternalFrame的状态没有保留

时间:2012-06-14 09:32:26

标签: java swing jframe jinternalframe maximize

我正在处理与此错误相关的问题:DefaultDesktopManager does not handle InternalFrame state changes as expected.

我有以下情况:

我的应用程序由JFrame组成,可以有多个JInternalFrame个。作为概述对话框,我有JInternalFrame最大化并显示数据表。用户可以打开表中实体的详细信息对话框。详细信息对话框也是JInternalFrame

  1. 问题:由于概览对话框已最大化,因此详细信息对话框也会最大化(不符合预期)。

  2. 问题:当详细信息对话框关闭时,概述对话框将失去其最大化状态。如果用户点击此对话框中的任何一点,它将恢复最大化。这对用户来说非常丑陋和令人困惑。如果我在关闭之前“取消最大化”细节对话框,则概览对话框也会失去其最大化状态并保持此状态。

  3. 在我看来,JFrame只能为其所有JInternalFrame保留一个全局状态。我不知道如何为此创建一个简单的解决方法。也许过去有人遇到过这个麻烦,可以指导我。

    提供SSCCE有点难,也许这就足够了,我正在通过这个显示详细信息对话框:

    DetailDialog detailDialog = new DetailDialog();
    applicationFrame.getDesktopPane().add(detailDialog);
    detailDialog.setVisible(true);
    

2 个答案:

答案 0 :(得分:1)

可能是问题

  1. 如果没有看到SSCCE

  2. ,就很难写出明智的东西
  3. 你期望从JInternalFrame[] getAllFrames()获得什么输出,是否有一些???

  4. 你期望从Internal Frame Listener获得什么输出,是否有一些???

  5. 您是否将JInternalFrame放置到JLayeredPane ???

答案 1 :(得分:1)

我发现了自己的错误。我正在为对话框使用控制器类,并将对话框的关闭委托给该类。在控制器中,我必须做一些验证,然后我调用对话框的dispose()。现在我打电话给setClosed(true)而不是有效。我认为现在有一些被解雇的事件被解雇了。