2010-08-11 247 views
9

tengo problemas para cambiar dinámicamente la altura de mis filas, ¿hay algún método que deba sobrecargar?JTable cambiar la altura de la fila dinámicamente

--Edit--

Lo siento por el mensaje corto que era mi primera .... Mi problema era realmente que ver con el cambio de la altura de la fila dependiendo del contenido. Entonces, lo que hice hasta ahora es una clase interna que implementa TabelCellRenderer.

Esto es lo que estoy haciendo en este momento para mis cálculos de altura de fila.

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; 
    } 

}

¿Sería ésta la forma correcta de hacer esto? Gracias.

+3

No, el procesador no debe cambiar la altura de la fila de la tabla. Esto debe hacerse cuando los datos se agregan al modelo. Esto significa que harías el cálculo cuando creas la tabla. Luego usaría un TableModelListener para escuchar los cambios en los datos y luego rehacer el cálculo. – camickr

+1

Gracias esa es una solución mucho mejor ya que crea separación entre las capas de datos y vista. Además, solo tendría que tener el código en un lugar y no preocuparme por crear un código de actualización cada vez que cambie el diseño de la tabla. – kohlerfc

+3

@camickr, los datos no tienen nada que ver con las vistas. ¿Cómo se supone que se debe calcular la fila de una altura cuando se agregan datos a un modelo? El modelo y los datos deben ser independientes de la vista. ** IS ** de hecho, la vista es parte del diseño que debería hacer cálculos sobre cómo ajustar algunos datos en el widget de lo que se va a mostrar. No digo que deba ser el procesador, pero seguro que el modelo no debería. – Sebastian

Respuesta

5
table.setRowHeight(...); 

Si necesita más ayuda, publique SSCCE.

+0

aceptado. ans muy directo ... – gumuruh

2

Simplemente llame al setRowHeight(row, height);. Por ejemplo:

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

establecerá la tercera fila en 30 de alto.

¿Es su pregunta más complicada? No has dicho mucho sobre el problema.

Cuestiones relacionadas