Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    12

    A capo automatico TableHeader

    Buongiorno a tutti!
    stavo realizzando una tabella.
    Ho utilizzato un DefaultTableModel in cui nel costruttore gli passavo due vettori contenenti i contenuti delle righe e i contenuti delle colonne di intestazione.
    Ho creato poi una classe MyJTable che estendesse la classe JTable perchè mi serviva fare un render di alcune celle attraverso il metodo getCellRenderer di TableCellRenderer, infine una classe MyRender che estende DefaultTableCellRenderer dove all'interno implementavo il metodo e ad esempio cambiavo il font di una particolare colonna o riga etc.

    Il mio problema ora è che non saprei come fare per poter far andare a capo in automatico il testo all'interno delle celle del TableHeader ( mi esce la parola con i "..." alla fine). Premetto che non posso aumentare di più la larghezza delle colonne.
    Ho provato ad aumentare il setPreferredSize del TableHeader pensando fosse un problema di spazio ed invece il testo si estende solo orizzontalmente.

    Ora cercando sui vari forum ho letto che potrei utilizzare un ActionListener oppure andare ad utilizzare il listener di TableModelListener che posso richiamare facendo ad esempio un table.getModel().addTableModelListener e poi implementare il metodo TableChange.
    Il problema è che non saprei come fare praticamente anche perchè io non dovrei attendere un particolare evento, ma una volta creata la tabella non la devo modificare e subito vorrei che il testo nel TableHeader andasse a capo senza cliccare da nessuna parte.

    Grazie mille per eventuali suggerimenti!

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: A capo automatico TableHeader

    Originariamente inviato da grozza
    Il mio problema ora è che non saprei come fare per poter far andare a capo in automatico il testo all'interno delle celle del TableHeader ( mi esce la parola con i "..." alla fine). Premetto che non posso aumentare di più la larghezza delle colonne.
    Ho provato ad aumentare il setPreferredSize del TableHeader pensando fosse un problema di spazio ed invece il testo si estende solo orizzontalmente.
    Anche gli header, come per le celle, si basano sui "renderer". Una soluzione sarebbe implementare un proprio renderer specifico per gli header. Ma a parte il fatto che ovviamente si scrive più codice, si dovrebbe prestare attenzione all'aspetto (colore di sfondo, ecc...) che normalmente ha un header.

    In realtà c'è una soluzione moooooolto più semplice. Il componente che fa da renderer per gli header generalmente per default è un banale JLabel. Quindi basta sfruttare la funzionalità di rendering di HTML dei componenti Swing.

    Basta che come testo del nome colonna metti una stringa es.

    "<html>Prima riga
    Seconda riga"

    Il </html> finale si può anche non mettere. E non c'è da fare null'altro!

    Originariamente inviato da grozza
    Ora cercando sui vari forum ho letto che potrei utilizzare un ActionListener oppure andare ad utilizzare il listener di TableModelListener che posso richiamare facendo ad esempio un table.getModel().addTableModelListener e poi implementare il metodo TableChange.
    Non centrerebbe nulla un listener con l'andare "a capo" nel header.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2010
    Messaggi
    12
    In realtà c'è una soluzione moooooolto più semplice. Il componente che fa da renderer per gli header generalmente per default è un banale JLabel. Quindi basta sfruttare la funzionalità di rendering di HTML dei componenti Swing. Basta che come testo del nome colonna metti una stringa es. "<html>Prima riga
    Seconda riga"
    Ti ringrazio della risposta! Quindi posso tranquillamente utilizzare i tag html anche per allineare il testo etc. Provo subito

    Edit: Perfetto ci sono riuscito! ancora grazie!! ciao!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.