【发布时间】:2015-04-20 21:30:54
【问题描述】:
我正在寻找一个将保持最大化的窗口,但可以拖动到其他屏幕(它将再次最大化)。我当前的实现未能做到这一点。
期望的行为:
- 窗口开始最大化
- 将窗口拖到不同的显示器
- 窗口在该显示器上最大化
实际行为:
- 窗口开始最大化
- 将窗口拖到不同的显示器
- 窗口保持未最大化状态(不过,奇怪的是,根据右上角的窗口图标,它看起来好像“认为”它已最大化)
- 如果我双击窗口以尝试最大化它(我不想这样做;这只是一个扩展的观察),它会在原始屏幕上最大化(不是它当前所在的屏幕)。
有人有什么想法吗?
SSCCE:
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class ComponentMovedTest extends JPanel
{
private ComponentMovedTest()
{
final JFrame frame = new JFrame("ComponentMovedTest");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// FIXME: Naive attempt at ensuring the window becomes maximized
// on the screen it moves to after moving finishes.
frame.addComponentListener( new ComponentAdapter()
{
@Override
public void componentMoved( ComponentEvent e )
{
frame.setExtendedState( JFrame.MAXIMIZED_BOTH );
}
});
frame.setExtendedState( JFrame.MAXIMIZED_BOTH );
frame.setResizable( false );
frame.setVisible(true);
}
public static void main(String[] args)
{
new ComponentMovedTest();
}
}
【问题讨论】:
-
我不确定 this will help,但它似乎解决了 Swing 中的一个错误,即当您使用 Windows 7 的拖动功能最大化/恢复窗口时,不会调用
COMPONENT_RESIZED。跨度>