JTable: Spaltenbreite automatisch anpassen

RungetSvohu

Bekanntes Mitglied
Die Überschrift sagt es bereits. Kann man in einer JTable dafür sorgen, dass alle Spalten genau so breit sind, dass der Inhalt gerade noch lesbar ist (also das, was Excel macht, wenn man zwischen zwei Spalten doppelklickt)?
 
Du holst dir die Schriftart des Tables, läufst alle Columns durch und errechnest mithilfe von FontMetrics die Breite des Strings. Die weist du dann der Column zu.
So sollte das funktionieren:
Java:
Font font=UIManager.getDefaults().getFont("Table.font");
		Enumeration<TableColumn> columns=table.getColumnModel().getColumns();
		FontMetrics fontMetrics=table.getFontMetrics(font);
		while(columns.hasMoreElements())
		{
			TableColumn c=columns.nextElement();
			String title=c.getHeaderValue().toString();
			Rectangle2D r=fontMetrics.getStringBounds(title, table.getGraphics());
			c.setPreferredWidth((int)r.getWidth()+10);
		}
edit: Man muss noch ungefähr 10 dazuzählen wegen dem Border von manchen Look and Feels
 
Zuletzt bearbeitet:
Vielen Dank. Du checkst aber nur die Überschrift der Spalte, oder? Ich müsste dann wohl noch zusätzlich alle Einträge durchgehen und die maximale Breite wählen, aber das ist ja kein Problem.
 

Zurück
Oben