# Fenster mit Mindestgröße?



## MichiM (31. Jul 2006)

Hallo,

lässt sich einem von JFrame abgeleiteten Fenster eine Mindestgröße zuweisen, damit das Fenster einen best. Anzeigebereich immer darstellt?

Habs mal mit Überschreiben der Methode getMinimumSize() probiert


```
public Dimension getMinimumSize ( )
	{
		return new Dimension ( 640, 480 );
	}
```

, man kann das Fenster jedoch weiterhin beliebig verkleinern.

Gibts da eine Möglichkeit, eine navigationstechnisch verbindliche Mindestgröße festzulegen?

Gruß Michi


----------



## Wildcard (31. Jul 2006)

Leider nur über einen ComponentListener der die Größe bei Bedarf auf die Mindestgröße zurücksetzt.


----------



## Novanic (31. Jul 2006)

Hi,

wie wärs einfach mit setMinimumSize(...) von JFrame?
Bei mir funktioniert es.

Gruß Nova


----------



## MichiM (31. Jul 2006)

Ok, funzt, danke! 


Für die Nachwelt:



```
... Klasse extends JFrame implements ActionListener, ComponentListener, usw. :)
```


Irgendwo in der Klasse den Listener installieren:


```
addComponentListener ( this );
```

Und die Interface-Methoden von ComponentListener implementieren:


```
public void componentHidden(ComponentEvent e)
	{
	}

	public void componentMoved(ComponentEvent e)
	{
	}

	public void componentResized(ComponentEvent e)
	{
		int breite, hoehe;
		
		if ( this.getWidth ( ) < 640 )
			breite = 640;
		else
			breite = this.getWidth ( );

		if ( this.getHeight ( ) < 480 )
			hoehe = 480;
		else
			hoehe  = this.getHeight ( );
		
		this.setSize ( breite, hoehe );
		
	}

	public void componentShown(ComponentEvent e)
	{
	}
```

Als Beispiel. 

Gruß Michi


----------



## MichiM (31. Jul 2006)

Novanic hat gesagt.:
			
		

> wie wärs einfach mit setMinimumSize(...) von JFrame?



Greift der Trick erst wieder ab 1.5? Mit 1.4 geht das bei mir nicht, mit 1.5 schon.


----------



## Illuvatar (31. Jul 2006)

Novanic hat gesagt.:
			
		

> Hi,
> 
> wie wärs einfach mit setMinimumSize(...) von JFrame?
> Bei mir funktioniert es.
> ...



Bei mir nicht...

Edit: Hä? Ich hab 1.5 0o


----------



## Novanic (31. Jul 2006)

Hm, also bei mir funktioniert das einwandfrei. Vielleicht funktioniert es nicht wenn die aktuelle Größe (setSize(...))kleiner ist als das was bei setMinimumSize(...) gesetzt wurde.

Bei mir sieht es so aus:


```
this.setSize(340, 300);
this.setMinimumSize(new Dimension(200, 200));
```

Und kleiner als 200 x 200 krieg ich es nicht resized...

Also normalerweise sollte das so auch klappen, ich arbeite jetzt auf der 1.6 Beta2, aber mit 1.5 hatte es auch funktioniert.
Sollte auch sauberer sein, also die andere Lösung ^^ 

Gruß Nova


----------



## Illuvatar (31. Jul 2006)

Spinn ich? 


```
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Test extends JFrame {

  public Test(String title) {
    // Frame-Initialisierung
    super(title);
     this.setSize(340, 300);
     this.setMinimumSize(new Dimension(200, 200));
    setVisible(true);
  }

  public static void main(String[] args) {
    new Test("Test");
  }
}
```

Lässt sich bei mir ohne Probleme minimalst minimieren...


----------



## Wildcard (31. Jul 2006)

Bei mir lässt sich das verkleinern(trotz Java5), weshalb ich auch den Listener vorgeschlagen hab.  ???:L


----------



## Novanic (31. Jul 2006)

Hm, das ist ja komisch.

Ich hab ne Klasse die JFrame erweitert (extends) und im Konstruktor steht das:


```
this.setLocation(471, 302);
this.setSize(340, 300);
this.setMinimumSize(new Dimension(200, 200));
this.setTitle("TestTitle");
this.setAlwaysOnTop(false);
this.setFocusable(true);
this.setLayout(null);
try {
UIManager.setLookAndFeel(new com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel());
} catch (UnsupportedLookAndFeelException e) {
e.printStackTrace();
}
```

Kann mal jemand testen, ob das bei euch funktioniert? Wäre ja merkwürdig warum das bei mir funktioniert und bei euch nicht. Vielleicht liegts ja am LayoutManager oder am LookAndFeel. Aber kann ja eigentlich auch nicht sein...

Gruß Nova


----------



## Illuvatar (31. Jul 2006)

Ich kanns verkleinern... ???:L


----------



## Wildcard (31. Jul 2006)

Lässt sich immer noch komplett verkleinern.


----------



## Novanic (31. Jul 2006)

Hä? Das gibts doch garnicht. Vielleicht ist die Funktion doch erst ab 1.6 Beta2 funktionsfähig. ;-)


----------



## Illuvatar (31. Jul 2006)

Ist anscheinend so.

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4320050


----------



## Novanic (31. Jul 2006)

Oha, eigentlich ziemlich traurig, dass ein 6 Jahre altes, leicht reproduzierbares, gravierendes Ticket jetzt erst gefixt wurde oder? *g*

Zum Glück wird Java ja bald OpenSource. *g*


----------



## Leroy42 (1. Aug 2006)

Illuvatar hat gesagt.:
			
		

> Ist anscheinend so.
> 
> http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4320050



Jetzt bin ich verwirrt  :autsch: 

Ist es denn nun eine _Bitte_ an die GUI oder ein Befehl?



> * Resizing operation *may be* restricted if user tries
> * to resize window below the <code>minimumSize</code> value.
> * This *behaviour is platform-dependent*.
> *


----------

