当JFrame处于最大化状态时,getBounds
方法返回与其当前状态匹配的边界。我需要的是“恢复边界”(即,如果用户在Windows平台上单击“恢复”),窗口将被设置的大小/位置,而不实际将其设置为非最大化状态。
我问的原因是因为我希望将边界保存为首选项,然后当用户重新打开应用程序时,将窗口设置为保存的边界(如果是最后一个状态,则将其最大化)。 / p>
我考虑在窗口最大化时添加一个监听器,但在我看来,在最大化之后通知监听器,我需要在之前通知 >它最大化。
答案 0 :(得分:10)
我将extendedState
,窗口位置和帧大小存储在我的应用程序的用户首选项中。添加ComponentListener
是可行的方法。您必须听取componentMoved
,componentResized
和componentShown
方法。从frame.getExtendedState() == JFrame.NORMAL
返回的值时,将frame.getBounds()
中的矩形存储为非最大化值。如果getExtendedState()
返回JFrame.MAXIMIZED_BOTH
,则不存储当前边界,但存储它已扩展的事实。只要你只保存上一个JFrame.NORMAL
扩展状态的值,你就会很好。
答案 1 :(得分:0)
我考虑过添加一个监听器 当一个窗口最大化但它 在我看来,听众是 在最大化之后得到通知,我会 需要在它之前得到通知 最大化。
那应该有用。添加侦听器以处理已调整大小的组件。触发事件时,在更新保存的边界之前,检查以确保窗口未处于最大化状态。