代码之家  ›  专栏  ›  技术社区  ›  Avrom

在JFrame处于最大化状态时查找其还原边界

  •  4
  • Avrom  · 技术社区  · 15 年前

    当JFrame处于最大化状态时 getBounds 方法返回与其当前状态匹配的边界。我需要的是“还原边界”(即,如果用户在Windows平台上单击“还原关闭”,窗口将设置为的大小/位置),而不实际将其设置为非最大化状态。

    我之所以问这个问题,是因为我希望将边界保存为首选项,然后当用户重新打开应用程序时,将窗口设置为保存的边界(如果这是上一个状态,则将其最大化)。

    我曾考虑在窗口最大化时添加一个侦听器,但在我看来,侦听器似乎收到了通知 它最大化了,我需要马上得到通知 之前 它是最大化的。

    2 回复  |  直到 15 年前
        1
  •  10
  •   SimonT    11 年前

    extendedState ,我的应用程序中用户首选项中的窗口位置和帧大小。添加 ComponentListener 这是一条路要走。你将不得不听音乐 componentMoved componentResized ,及 componentShown frame.getExtendedState() == JFrame.NORMAL ,从中存储矩形 frame.getBounds() 作为你的非最大化价值。如果 getExtendedState() 返回 JFrame.MAXIMIZED_BOTH ,则不存储当前边界,而是存储它已扩展的事实。只要您只存储上一个 JFrame.NORMAL 延长状态,你会很好。

        2
  •  0
  •   camickr    15 年前

    在我看来,听众是 在其最大化后通知,我将 最大化。

    这应该行得通。添加侦听器以处理已调整大小的组件。触发事件时,在更新保存的边界之前,请检查以确保窗口未处于其最大化状态。