gibt es eine elegante Möglichkeit die optimale Spaltenbreite für eine
Tabelle zu ermitteln.
Bisher mache ich das folgendermaßen:
In einer Schleife laufe ich über alle Spalten und innerhalb einer Spalte über alle Zeilen. Aus den Zeilenobjekten ermittle ich die
jeweilige Breite und merke mir immer die Breite des größten Objekts.
Anschließend setze ich die ermittelte Breite für die Spalte.
Problem ist, dass das GUI manchmal an dieser Stelle hängen bleibt ???
und die Sache natürlich nicht gerade performant ist.
gibt es eine elegante Möglichkeit die optimale Spaltenbreite
für eine
Tabelle zu ermitteln ?.
Vermutlich.
Bisher mache ich das folgendermaßen:
In einer Schleife laufe ich über alle Spalten und innerhalb
einer Spalte über alle Zeilen. Aus den Zeilenobjekten ermittle
ich die
jeweilige Breite und merke mir immer die Breite des größten
Objekts.
Anschließend setze ich die ermittelte Breite für die Spalte.
Zu deutsch: das Design der Tabelle ist uneinheitlich.
Ich würde nur die maximale Breite und Höhe eines Objekts der Tabelle nehmen.
Problem ist, dass das GUI manchmal an dieser Stelle hängen
bleibt ???
Algorithmus performant programmiert (*)? Welcher GUI Stil (Swing, AWT) ?
(*)damit ist gemeint, dass die verschachtelten Schleifen mit dynamischen Werten mehr CPU-Zeit und Speicher verbrauchen als eigentlich nötig.
und die Sache natürlich nicht gerade performant ist.
viel anders gehts eigentlich nicht. Die Daten werden in einem Vektor gespeichert. Der Zugriff erfolgt über Zeile/Spalte. Die Daten werden also sonst an keiner Stelle gelesen und der Zugriff ist unperformant.
Etwas schneller sollte es gehen, wenn Du direkt den Datenvektor ZEILENWEISE ausliest. Dann musst Du an jedes Zeilenobjekt nur einmal ran.
Die beste Stelle, um die Zeilenbreite zu bestimmen, ist natürlich dort, wo die Daten eingelesen werden, also an der Quelle. Wenn man die Daten aus der Datenbank holt, kann man ja gleich die Länge auslesen.
Gruß
Peter
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hatte das gleiche problem. Habe dann das TableModel selbst aufgebaut
und dabei ein eigenes String[] - Array als grundlage genommen. Dann
erfolg der Zugriff innerhalb des Array direkt ohne den umweg über die
model- und vector - api im DefaultTableModel