JTable/JScrollpane automatisch an Fenstergröße anpassen

Kalmuecke

Grünschnabel
Moin moin,

ich habe jetzt schon einiges über die Layoutmanager gelesen und wie schön sie eigentlich die Fensterelemente (Buttons, Labels, etc.) automatisch beim Maximieren oder Minimieren an die Fenstergröße anpassen.
Leider klappt das mit meinem JTable nicht.
Ich habe ein JPanel angelegt und da hinein mein JScrollpane. Das JScrollpane enthält mein JTable.

Aber leider bleibt die Größe meiner Tabelle immer die gleiche. Es werden die Spalten zusammengeschoben, so daß die Spaltenüberschriften nicht komplett gelesen werden können und die Größe verändert sich auch nicht beim Maximieren oder Minimieren!

Was mache ich da falsch
Hier noch ein kleiner Codeschnipsel:
Code:
/* Titel setzen */
		this.setTitle(progName);
		this.setSize(new Dimension(800, 600));
		Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
		int xpos = (screenSize.width - getWidth()) / 2;
		int ypos = (screenSize.height - getHeight()) / 2;
		this.setLocation(xpos, ypos);
		this.setLayout(new FlowLayout() );

		/* Menü erzeugen WICHTIG: muss vor setVisible geschehen, sonst wird Menü nicht angezeigt */
		this.createMenu();
		
		/* wenn Fenster geschlossen wird, wird auch Anwendung beendet */
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		/* Panel für die Übersichts-Tabelle */
		JPanel tablePanel = new JPanel(new GridBagLayout());
		JTable tableOverview 	= new JTable(new eBayOrgaMainDTableModel());
		JTableHeader header 	= tableOverview.getTableHeader();
		tableOverview.getModel().addTableModelListener(this);
		header.setBackground(Color.GRAY);
		header.setForeground(Color.white);
		/*Scrollbar für die Übersichts-Tabelle */
	    JScrollPane scrollPane = new JScrollPane(tableOverview);
	    //scrollPane.setPreferredSize(this.getSize());
	    
	    tablePanel.add(scrollPane);
	    
	    /* Panel für Übersichts-Tabelle auf das Frame legen */
	    this.add(tablePanel);
		/* Fenster maximieren */
	    this.setExtendedState(MAXIMIZED_BOTH);

		/* Programm-Icon setzen */
		//TODO: this.setIconImage(getToolkit().getImage(this.getClass().getResource("/Mediafiles/" + "icon.jpg")));
		/* visible setzen sonst sehen wir das Fenster gar nicht */
	    this.setVisible(true);

Danke im voraus für eure Hilfe!
Gruss
Muecke
 
Statt this.setLocation(xpos, ypos); kannst du auch setLocationRelativeTo(null); nehmen, dann musst du da nicht rumrechnen.

Versuch mal statt:
JPanel tablePanel = new JPanel(new GridBagLayout());
lieber
JPanel tablePanel = new JPanel(new BorderLayout());

Nen GridBagLayout ist ja unnötig bei nur einer Komponente.
 
Statt this.setLocation(xpos, ypos); kannst du auch setLocationRelativeTo(null); nehmen, dann musst du da nicht rumrechnen.

Versuch mal statt:
JPanel tablePanel = new JPanel(new GridBagLayout());
lieber
JPanel tablePanel = new JPanel(new BorderLayout());

Nen GridBagLayout ist ja unnötig bei nur einer Komponente.

Danke für den Hinweis mit set LocationRelative!

Aber leider funktioniert das BorderLayout in meinem JFrame auch nicht! Die Tabelle bleibt immer noch "steif" in seiner Größe und verändert diese nicht.
 
Hast du es auch ins CENTER gesetzt?

Sollten weitere Probleme sein oder immer noch das selbe dan poste doch mal ausführabren Code. Es kann nehmlich sein das du ein Borderlaoyut in ein anderres Layout hast was alles zunichte macht.
 
Zurück