在JFrame处于最大化状态时查找JFrame的恢复边界

时间:2009-10-14 18:47:20

标签: java swing

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

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

我考虑在窗口最大化时添加一个监听器,但在我看来,最大化之后通知监听器,我需要在之前通知 >它最大化。

2 个答案:

答案 0 :(得分:10)

我将extendedState,窗口位置和帧大小存储在我的应用程序的用户首选项中。添加ComponentListener是可行的方法。您必须听取componentMovedcomponentResizedcomponentShown方法。从frame.getExtendedState() == JFrame.NORMAL返回的值时,将frame.getBounds()中的矩形存储为非最大化值。如果getExtendedState()返回JFrame.MAXIMIZED_BOTH,则不存储当前边界,但存储它已扩展的事实。只要你只保存上一个JFrame.NORMAL扩展状态的值,你就会很好。

答案 1 :(得分:0)

  

我考虑过添加一个监听器   当一个窗口最大化但它   在我看来,听众是   在最大化之后得到通知,我会   需要在它之前得到通知   最大化。

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