目标:
我希望有一个在Frame.MAXIMIZED_BOTH
状态下可见的框架,但我也希望它具有预定义的正常大小,因此当用户取消最大化它时,框架将调整为我想要的大小。而且我希望框架首先出现最大化,而不需要视觉调整大小。我希望框架保持最大化,直到用户取消最大化它。
到目前为止我尝试过的事情:
1)
frame.setExtendedState( Frame.MAXIMIZED_BOTH );
frame.setVisible( true );
frame.setSize( 500, 500 );
评价:框架会切换到正常状态(不会保持最大化)=>不好。
2)
frame.setSize( 500, 500 );
frame.setExtendedState( Frame.MAXIMIZED_BOTH );
frame.setVisible( true );
评估:窗口(或只是它的框架)将以 500x500 的大小出现,然后视觉调整大小(最大)将可见 => 不好。这样做的原因是,如果一个框架不可见,调用setExtendedState()
将被推迟到该框架可见。
3)
frame.setSize( 500, 500 );
frame.setVisible( true );
frame.setExtendedState( Frame.MAXIMIZED_BOTH );
评估:就像在尝试#2 中一样,框架会有视觉上的调整大小 => 不好。
4)
我尝试将组件侦听器添加到覆盖框架componentResize()
并在那里更改状态。我还尝试添加一个窗口状态侦听器覆盖windowStateChange()
。我还尝试添加一个窗口侦听器覆盖windowOpened()
。
评估:所有结果都导致视觉调整大小,就像尝试 #2 => 不好。
那么,如果我希望我的框架具有预定义的正常大小,但我希望它看起来最大化,我该怎么办?
编辑:将整个问题编辑得更清楚,并添加了示例代码(SSCCE)。