2010-08-11 3 views
9

Je n'arrive pas à modifier dynamiquement la hauteur de mes lignes, y a-t-il une méthode que je dois surcharger?JTable change dynamiquement la hauteur des lignes

--Edit--

Désolé pour le court après ce fut mon premier .... Mes problèmes était vraiment à voir avec le changement de la hauteur de la ligne en fonction du contenu. Donc ce que j'ai fait jusqu'ici est fait une classe interne qui implémente TabelCellRenderer.

C'est ce que je fais en ce moment pour mes calculs de hauteur de rangée.

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

}

Serait-ce la bonne façon de le faire? Merci.

+3

Non, le moteur de rendu ne doit pas modifier la hauteur de la ligne du tableau. Cela devrait être fait lorsque des données sont ajoutées au modèle. Cela signifie que vous feriez le calcul lorsque vous créez la table. Ensuite, vous utiliserez un TableModelListener pour écouter les modifications apportées aux données, puis refaire le calcul. – camickr

+1

Merci, c'est une bien meilleure solution car elle crée une séparation entre les couches de données et de vue. Aussi, je n'aurais qu'à avoir du code à un endroit et ne pas me soucier de créer du code de mise à jour chaque fois que je change la disposition de la table. – kohlerfc

+3

@camickr, les données n'ont rien à voir avec les vues. Comment est-il supposé calculer la ligne d'une hauteur lors de l'ajout de données à un modèle? Le modèle et les données doivent être indépendants de la vue. ** EST ** en effet la partie vue de la conception qui devrait faire des calculs sur la façon d'adapter certaines données dans le quel-widget va être affiché. Je ne dis pas que ça devrait être le moteur de rendu, mais c'est sûr que le modèle ne devrait pas. – Sebastian

Répondre

5
table.setRowHeight(...); 

Si vous avez besoin de plus d'aide poster votre SSCCE.

+0

accepté. très simple et ... – gumuruh

2

Vous appelez simplement setRowHeight(row, height);. Par exemple:

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

va régler la 3ème ligne à 30 haut.

Votre question est-elle plus compliquée? Vous n'avez pas beaucoup parlé du problème.

Questions connexes