2

次のコードがあります。

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

2 に答える 2

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);

JFrameを最大化するには、

java.awt.Frame#setExtendedState(int)

このような

setExtendedState(java.awt.Frame.MAXIMIZED_BOTH);
于 2012-12-27T19:43:42.067 に答える