2010-08-11 16 views
9

Ho problemi a modificare dinamicamente l'altezza delle mie righe, c'è un metodo che devo sovraccaricare?JTable modifica dinamicamente l'altezza della riga

--Edit--

Ci scusiamo per il breve post era la mia prima .... I miei problemi era veramente a che fare con il cambiamento l'altezza della riga a seconda del contenuto. Quindi quello che ho fatto fino ad ora è una classe interiore che implementa TabelCellRenderer.

Questo è quello che sto facendo in questo momento per i miei calcoli di altezza della riga.

private static class TextAreaRenderer extends JTextPane implements TableCellRenderer 
    { 


    public Component getTableCellRendererComponent(JTable table, Object value, 
               boolean isSelected, 
               boolean hasFocus, int row, 
               int column) 
    { 
     /* Setup Code here */ 

     this.setText(((String)value).getEntityName()); 
     int height = new Double(this.getPreferredSize().getHeight()).intValue(); 
     if (table.getRowHeight(row) < height) 
      table.setRowHeight(row, height); 

     /* some more code */ 

     return this; 
    } 

}

Questo sarebbe il modo corretto di fare questo? Grazie.

+3

No, il renderer non deve modificare l'altezza della riga della tabella. Questo dovrebbe essere fatto quando i dati vengono aggiunti al modello. Ciò significa che dovresti eseguire il calcolo quando crei la tabella. Quindi dovresti utilizzare un TableModelListener per ascoltare le modifiche ai dati e quindi ripetere il calcolo. – camickr

+1

Grazie, è una soluzione molto migliore in quanto crea una separazione tra i dati e i livelli di visualizzazione. Inoltre, dovrei solo avere il codice in un posto e non preoccuparti di creare codice di aggiornamento ogni volta che cambio il layout della tabella. – kohlerfc

+3

@ camickr, i dati non hanno nulla a che fare con le visualizzazioni. Come si calcola la riga di un'altezza quando si aggiungono dati a un modello? Il modello e i dati devono essere indipendenti dalla vista. ** È ** in effetti la parte vista del progetto che dovrebbe fare calcoli su come adattare alcuni dati nel widget-qualunque che verrà visualizzato. Non sto dicendo che dovrebbe essere il renderer, ma di sicuro il modello non dovrebbe. – Sebastian

risposta

5
table.setRowHeight(...); 

Se hai bisogno di ulteriore aiuto inserisci il tuo SSCCE.

+0

accettato. molto semplice ans ... – gumuruh

2

È sufficiente chiamare setRowHeight(row, height);. Ad esempio:

JTable t = new JTable(5, 5); 
t.setRowHeight(2, 30); 

imposta la 3a riga su 30 alto.

La tua domanda è più complicata? Non hai detto molto sul problema.

Problemi correlati