JTable in JScrollPane, Spaltengröße automatisch anpassen

das_pseudonym

Grünschnabel
Hallo,

ich bin schon seit einigen Stunden auf der Suche nach der Lösung zu folgendem Problem:

Ich habe eine JTable in einer JScrollPane und folgendes Verhalten bekomm ich einfach nicht hin:

  • Die Größe der JTable soll so angepasst werden, dass jeder ColumnHeader bzw. wenn der Row-Content der Spalte größer ist jener sichtbar ist.
  • Die JScrollPane soll (wie es auch ihre ursprüngliche Aufgabe ist) über den Content der JTable scrollen.
  • Beim resizing des JFrames soll sich die JTable auch mit vergrößern. (Habs momentan so, das die Größe gleich bleibt, somit ist die letzte Spalte abgeschnitten)
  • Der Inhalt der JTable verändert sich regelmäßig, also muss das resizing der Spalten auch mehr oder weniger dynamisch funktionien.

Ich wäre wirklich sehr dankbar, wenn mir jemand weiterhelfen könnte.

Vielen Dank im Voraus.
 
Ich würde hier mit einem StateChangedBean und einem BeanListener arbeiten ... da wäre denke ich die einfachste Lösung ... wie genau das aber nun geht müsste auch ich erstmal in der DOC nachlesen.
 
ich hab keine Ahnung wie ich das realisieren soll, da ich noch nie damit gearbeitet habe.
Wenn das allerdings andere libs sind würd ich eine methode in swing bevorzugen.
 
Nein nein ... Beans *oder wie sie richtig heißen : JavaBeans* sind schon Bestandteil von Java selbst. Man kann damit allerhand machen. In Swing werden Beans vor allem für Status#nderungen und deren Überwachung verwendet *lies dir ruhig mal ein paar DOCs durch ... dann wirst du darauf stoßen*.
Aber wie gesagt : wie genau das nun funktioniert weis auch nicht ... aber ich weis das es sowas bereits in der Standard-API gibt.
 
Hallo,

mal schauen, ob ich richtig verstanden habe, was du möchtest.
Die Spalte soll immer so breit sein, dass der Inhalt komplett dargestellt wird. Die Tabelle soll so breit sein wie das Fenster und die Tabelle liegt in einer JScrollpane.

Ist das so korrekt?

Ich würde hier mit einem StateChangedBean und einem BeanListener arbeiten ... da wäre denke ich die einfachste Lösung ... wie genau das aber nun geht müsste auch ich erstmal in der DOC nachlesen.

Ich weiß jetzt nicht was dieser BeanListener sein soll. Was du aber nutzen kannst, ist der ComponentListener. Dieser reagiert darauf, wenn eine Component ihre Größe ändert. Da könntest du dann die Größe der Tabelle neu setzen.

Gruß

Sascha
 
Hallo,

mal schauen, ob ich richtig verstanden habe, was du möchtest.
Die Spalte soll immer so breit sein, dass der Inhalt komplett dargestellt wird. Die Tabelle soll so breit sein wie das Fenster und die Tabelle liegt in einer JScrollpane.

Ist das so korrekt?
Ja, bis auf den Teil mit der Größe der Tabelle. Deren Breite soll ja größer sein als das Fenster.
Die JScrollPane soll das Ganze dann scrollable machen, damit es in einem kleinerem Fenster anzeigbar ist.

Ich weiß jetzt nicht was dieser BeanListener sein soll. Was du aber nutzen kannst, ist der ComponentListener. Dieser reagiert darauf, wenn eine Component ihre Größe ändert. Da könntest du dann die Größe der Tabelle neu setzen.

Allerdings wird alles schon beim Erstellen der JTable/JScrollPane-Instanz nicht entsprechend angezeigt.
Da wurde ja noch gar kein Event gefeuert, dass mir die Arbeit mit dem ComponentListener erlaubt.

Ich werde leider einige Tage nicht antworten können, da ich im Ausland bin.
Ich bedanke mich aber trotzallem schon im Vorhinein für etwaige Hilfe.

lg

pseudo
 

Neue Beiträge

Zurück