2013-02-17 48 views
2

我无法在最小化后使自定义JFrame正确地最大化。这是我经历的过程:我打开框架,最大化它(下面的代码),最小化它,并从码头重新打开程序。但是,当我重新打开框架时,它会恢复到其原始尺寸,而不是最小化之前的最大尺寸。JFrame在最小化后不会重新最大化

当按下最大化和最小化按钮时,会调用这些方法。这是一个自定义的JFrame,它没有装饰,所以我为这些动作制作了按钮。

private void maximizeAction(){ 
    setExtendedState(getExtendedState() | Frame.MAXIMIZED_BOTH); 
}//================================= 

private void minimizeAction(){ 
    setExtendedState(Frame.ICONIFIED); 
}//================================= 

我尝试添加一个setPreferredSize(new Dimension(screenWidth, screenHeight));线最大化的功能,但是当我重新打开它并没有改变框架的行为。

其它可能的贡献因素可能是:

  • 框架具有透明性和独特的框架形状,所以我已重写的paint()命令。但是,我使用继承的变量,所以这些应该是准确的。这就像框架已经忘记了它有多大。

回答

2

您需要保持以前的扩展状态。

private void minimizeAction(){ 
    setExtendedState(getExtendedState() | Frame.ICONIFIED); 
}//================================= 
+0

该代码为我引发错误。我最大化框架,然后单击最小化按钮(在实现您的代码后),我得到以下错误: '线程中的异常“AWT-EventQueue-0”java.lang.RuntimeException:未知的窗口状态:7' – AndrewCox 2013-02-17 02:41:23