0

我正在处理一个与我认为的这个错误有关的问题:DefaultDesktopManager 没有按预期处理 InternalFrame 状态更改。

我有以下情况:

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

  1. 问题:因为概览对话框被最大化,所以细节对话框也被最大化(不像预期的那样)。

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

在我看来,它的所有sJFrame只能保持一个全局状态。JInternalFrame我不知道如何为此创建一个简单的解决方法。也许过去有人遇到过这个问题并且可以指导我。

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

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

2 回答 2

1

可能是问题

  1. 没有看到你的SSCCE就很难写出明智的东西

  2. 您期望从JInternalFrame[] getAllFrames()得到什么输出,有吗?

  3. 您期望内部帧侦听器的输出是什么,有吗???

  4. 你把 JInternalFrame 放到 JLayeredPane 了吗???

于 2012-06-14T09:42:05.210 回答
1

我发现了我的错误。我正在为对话框使用控制器类,并将对话框的关闭委托给该类。例如,在控制器中,我必须进行一些验证,然后调用dispose()对话框。现在我打电话给setClosed(true)哪个有效。我认为那里缺少一些已触发的事件,这些事件现在已被触发。

于 2012-06-14T11:27:55.250 回答