Sul tutorial Sun di JTable c'è un esempio di come fare. Basta adattarlo al proprio modello di tabella.Originariamente inviato da andbin
Purtroppo non c'è un metodo o sistema già fatto per far sì che le colonne si dimensionino in "automatico" in base al loro contenuto.
La questione è che il contenuto è visualizzato tramite i ben noti "renderer" ma la larghezza della colonna non è in funzione del renderer .... è il contrario. Cioè è JTable tramite appositi criteri (o il programmatore esplicitamente) a poter impostare una larghezza alla colonna che poi a sua volta si ribalta sulla dimensione del Component (fornito dal renderer) che JTable "stampa" a video.
Tecnicamente comunque si potrebbe fare, anche se "macchinoso". Prendi il renderer relativo alla colonna X, invochi il renderer (il getTableCellRendererComponent() ) passando tutti i dati compreso il valore della riga i-esima). Per ogni "cella" della colonna prendi il "preferred size" del Component fornito dal renderer. Quindi calcoli il massimo tra tutte le larghezze "preferite" e magari ci sommi qualcosina (penso innanzitutto ai bordi/gap delle celle, vedi i metodi di JTable).
E ottieni la larghezza complessiva "preferita" per visualizzare al "giusto" quella colonna.
Ma ripeto, non c'è nulla di già fatto.
L'ho implementato e funziona. Solo che non riesco a capire come fare in modo che la tabella prenda una dimensione preferita.
Nel senso che io calcolo la larghezza di ogni colonna, e le sommo tutte per ottenere quella che dovrebbe essere la larghezza della tabella totale.
La tabella è in uno JScrollPane.
Come posso fare per rendere la tabella di una certa larghezza? E' possibile?