2012-12-27 93 views
2

有以下代码:如何设置JFrame的最大尺寸?

double gridWidth=columnNumber*(IMAGE_WIDTH_NORMAL+10)+(columnNumber+2)*10; 
double screenWidth=Toolkit.getDefaultToolkit().getScreenSize().getWidth()*0.8; 
screenWidth=(gridWidth>=screenWidth) ? screenWidth : gridWidth; 

double gridHeight=(rules.size()+2)*(IMAGE_HEIGHT_NORMAL+10)+rules.size()*20+(rules.size()+2)*10; 
double screenHeight=Toolkit.getDefaultToolkit().getScreenSize().getHeight()*0.8; 
screenHeight=(gridHeight>=screenHeight) ? screenHeight : gridHeight; 

setSize((int)screenWidth, (int)screenHeight); 
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); 
setLocation(screenSize.width/2-getWidth()/2, screenSize.height/2-getHeight()/2); 
setMaximumSize(new Dimension((int)gridWeight, (int)gridHeight)); 
setVisible(true); 

此代码执行以下操作的事:计算优选宽度和框架的高度,并且如果尺寸更大然后我想要(宽度和高度的80%),然后应用程序集另一种尺寸;但我想让用户点击jframe上的“全屏”图标以便为首选大小(setMaximumSize()方法)最大化jframe,但它的代码不起作用!总是一个窗口最大化我的笔记本电脑全屏幕!我该如何解决它?

回答

4

我不知道如果我理解正确的问题,但我建议使用

java.awt.Window#setBounds(int, int, int, int)

设置JFrame的位置和大小。

int x = screenSize.width/2-getWidth()/2; 
int y = screenSize.height/2-getHeight()/2; 
int width = (int)gridWeight; 
int height = (int)gridHeight); 
setBounds(x, y, width, height); 

为了最大限度地提高我建议使用

java.awt.Frame#setExtendedState(int)

这样

setExtendedState(java.awt.Frame.MAXIMIZED_BOTH); 
一个JFrame