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

Avr*_*rom 4 java swing

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

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

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

Nem*_*emi 10

我将extendedState窗口位置和框架大小存储在我的应用程序的用户首选项中.添加一个ComponentListener是要走的路.你将不得不听componentMoved,componentResizedcomponentShown方法.返回值时frame.getExtendedState() == JFrame.NORMAL,将Rectangle存储frame.getBounds()为非最大化值.如果getExtendedState()返回JFrame.MAXIMIZED_BOTH,则不存储当前边界,但确实存储了它被扩展的事实.只要您只存储上次JFrame.NORMAL扩展状态的值,您就会很好.