2012-12-27 95 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