# JTable-Größe mit Fenstergröße verändern.



## Düark (14. Feb 2005)

Hallo, ich habe ein Frame, in dem ein JTable in einem ScrollPane ist.
Ich würde es gerne so machen, dass beim Größerziehen des Fensters die Tabelle mitwächst, bzw eine bestimmt Spalte mitwächst und umgekehrt sich verkleinert, bis zu einer Mindestgröße, ab der dann erst der Scrollbar seine Arbeit beginnen soll. 
Hat jemand eine idee wie man das machen könnte?

Gruss
Düark


----------



## dotlens (14. Feb 2005)

die antwort ist: LayoutManager

Falls du nichts kompliziertes hast. kannst du das BorderLayout verwenden und das scrollPane in 'Center' stecken. So wird es automatisch so gross gemacht wie es noch Platz hat.

Ansonsten schau dir das komplexere GridBagLayout an


----------



## Düark (14. Feb 2005)

Hmm, das hab ich eigentlich gemacht, aber das bringts nicht...


```
JScrollPane sp = new JScrollPane(table);
...
getContentPane().setLayout(new BorderLayout());
getContentPane().add(panel2, "North");
getContentPane().add(sp, "Center");
getContentPane().add(statbar, "South");
...
```
 ???:L


----------



## Düark (14. Feb 2005)

Ok, den ersten Schritt hab ich schonmal hinbekommen (hatte in der Table den AutoResize ausgeschaltet).
Jetzt dockt die Table ans Fenster an. Allerdings ist der Scrollpane jetzt inaktiv, d.h. egal wie klein ich das Fenster mache, kein Scrollbalken erscheint


----------



## Düark (14. Feb 2005)

So, für alle die es interessiert, ich habe hier die Lösung gefunden:
http://www.java-forum.org/de/viewtopic.php?t=2664&highlight=table+scrollpane
In meiner JTable hab ich eine Methode getAllColumnWidth() geschrieben, die mir jeweils die höchstmögliche Breite anzeigt (durch zusammmenzählen aller Spaltenbreiten).

```
JScrollPane sp = new JScrollPane(table){
     public void reshape( int x, int y, int w, int h ){ 
             table.setAutoResizeMode( w > table.getAllColumnWidth() ?    
             JTable.AUTO_RESIZE_SUBSEQUENT_COLUMNS : JTable.AUTO_RESIZE_OFF ); 
     super.reshape( x, y, w, h ); 
   } 
};
```

Laut Autor nicht elegant, aber mir reichts...

Danke für die Hilfe!


----------

