# JFrame Größe ändern



## Klaus2002 (5. Jan 2012)

Hallo

Mit der folgenden Methode ändere ich die Größe eines JFrame.

```
private void handleResolution(int keyCode) {

		if (keyCode == KeyEvent.VK_1) {
			_screenwidth = 2048;
			_screenheight = 1024;
		}

		if (keyCode == KeyEvent.VK_2) {
			_screenwidth = 1024;
			_screenheight = 768;
		}

		if (keyCode == KeyEvent.VK_3) {
			_screenwidth = 800;
			_screenheight = 600;
		}

		if (keyCode == KeyEvent.VK_ESCAPE) {
			_gameState = GameState.OPTIONS;
		}

		if (_screenwidth > screensize.width
				|| _screenheight > screensize.height) {
			_screenwidth = screensize.width - 1; // TODO wenn nicht -1 dann kann
													// man das JFrame nicht
													// wieder verkleinern.
			_screenheight = screensize.height;
		}
		p.setSize(_screenwidth, _screenheight);
		p.validate();
	}
```
Zur Zeile 24 habe ich eine Frage. Wenn dort nicht "-1" stehen würde, könnte ich das Fenster sobald es einmal die Maximal-Größe erhalten hat nicht mehr verkleiner.
screensize bekomme ich über:

```
Dimension screensize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
```
Es sieht so aus, als ob das Fenster dann festkleben würde.
Hat jemand eine Idee woran das liegen könnte?


----------



## bERt0r (5. Jan 2012)

Ehm versuchst du sowas: frame.setExtendedState(JFrame.MAXIMIZED_BOTH);


----------



## Klaus2002 (5. Jan 2012)

Im Prinzip schon. Das Problem ist aber nicht das ich es nicht auf Vollbild bekomme. Sondern das wenn es einmal auf Vollbild ist, ich es nicht mehr mit setSize(_screenwidth, _screenheight); kleiner bekomme. Sobald es aber auch nur um einen Pixel kleiner ist, kann ich ohne Probleme zwischen allen Größen wechseln.

frame.setExtendedState(JFrame.MAXIMIZED_BOTH);  macht ja ein Vollbild nur das ich es halt dann nicht mehr kleiner bekomme. Daher habe ich das etwas anders geschrieben. Als Endergebnis möchte ich mit den Tasten 1,2,3 zwischen 3 festen Auflösungen wechseln können. Falls ein Monitor eine Auflösung nicht hergibt, soll stattdessen einfach nur ein Vollbild dargestellt werden.


----------



## GUI-Programmer (5. Jan 2012)

Schreib doch einfach 
	
	
	
	





```
frame.setExtendedState(JFrame.NORMAL);
```
 und verändere danach die Size.


----------



## Klaus2002 (5. Jan 2012)

Danke genau das hat gefehlt.


----------

