Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    larghezza colonne Jtable

    Ciao, ho una jtable e vorrei impostare la larghezza della colonna in base ai valori inseriti nella cella o almeno impostare una larghezza fissa in modo che la tabella nel scroll pane possa scorrere anche orizzontalmente!! E poi come faccio a verificare se lo scroll pane scorre anche orizzontalmente?? grazie!!

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

    Re: larghezza colonne Jtable

    Originariamente inviato da rocklife
    Ciao, ho una jtable e vorrei impostare la larghezza della colonna in base ai valori inseriti nella cella o almeno impostare una larghezza fissa in modo che la tabella nel scroll pane possa scorrere anche orizzontalmente!!
    Innanzitutto vedi il modo di auto-resize (metodo setAutoResizeMode() di JTable). Se non è AUTO_RESIZE_OFF (per default è AUTO_RESIZE_SUBSEQUENT_COLUMNS), non c'è mai scrolling orizzontale perché la larghezza delle colonne è gestita in base ad uno dei vari criteri.
    Ad esempio con AUTO_RESIZE_SUBSEQUENT_COLUMNS (il default come ho detto), quando ridimensioni una colonna, si ridimensionano in automatico quelle successive. Proprio per fare in modo che non ci sia scrolling orizzontale.

    Quindi? Innanzitutto imposta AUTO_RESIZE_OFF. Poi se vuoi impostare una dimensione esplicita della colonna, prendi il TableColumnModel (con getColumnModel() di JTable), dal TableColumnModel prendi la colonna (getColumn(indice)) e invochi il setPreferredWidth() sulla colonna.

    Originariamente inviato da rocklife
    E poi come faccio a verificare se lo scroll pane scorre anche orizzontalmente?? grazie!!
    In che senso?? Innanzitutto crea il JScrollPane in modo che abbia la policy HORIZONTAL_SCROLLBAR_AS_NEEDED o HORIZONTAL_SCROLLBAR_ALWAYS. E poi a quel punto, se le colonne non ci staranno, allora si potrà scrollare.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    ok grazie!! ma c'e' un modo per fissarlo uguale per tutti oppure per sapere la stringa piu' lunga nella colonna e adattare a questa la larghezza della colonna?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da rocklife
    ma c'e' un modo per fissarlo uguale per tutti
    Tutte di larghezza uguale, imposta da te? Sì, basta che invochi setPreferredWidth() per impostare la dimensione su ognuna delle colonne. Se poi non vuoi che l'utente possa ridimensionarle tramite mouse, allora è un altro conto!

    Originariamente inviato da rocklife
    per sapere la stringa piu' lunga nella colonna e adattare a questa la larghezza della colonna?
    Qui bisognerebbe prendere il Font dal JTable, ottenere quindi il FontMetrics sempre dal JTable (passando il font) e fare un bel ciclo su tutte le righe della tabella, determinare il contenuto della cella su una data colonna (se è un String è facile), calcolare la dimensione fisica tramite stringWidth() di FontMetrics, tenere man mano la dimensione maggiore e alla fine ... impostare quella come larghezza della colonna.

    EDIT: anzi ... in linea generale, sarebbe (forse) più corretto prendere il Font dal componente fornito dal renderer per una certa cella.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2007
    Messaggi
    4,157
    Originariamente inviato da andbin
    Tutte di larghezza uguale, imposta da te? Sì, basta che invochi setPreferredWidth() per impostare la dimensione su ognuna delle colonne. Se poi non vuoi che l'utente possa ridimensionarle tramite mouse, allora è un altro conto!
    ti volevo chiedere invece come fare a fissare la tabella in modo che alcune colonne restino fisse anche dopo il resize mentre altre si ridimensionano.
    Ora non posso usare il metodo setAutoResizeMode() con AUTO_RESIZE_SUBSEQUENT_COLUMNS perchè, per come è costruita la tabella, le colonne successive non devono ridimensionarsi tutte.

    mi spiego, supponi di avere una tabella

    codice indicativo nome data totale note

    il ridimensionamento è ammesso solo per nome e note, come faccio in maniera rapida?

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 © 2025 vBulletin Solutions, Inc. All rights reserved.