Projet gus05 de développement Java
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
Le Deal du moment :
Cartes Pokémon 151 : où trouver le ...
Voir le deal

Réajuster automatiquement la taille des colonnes d'un JTable

Aller en bas

Réajuster automatiquement la taille des colonnes d'un JTable Empty Réajuster automatiquement la taille des colonnes d'un JTable

Message  Gus Dim 17 Avr - 14:13

Voici une entité qui permet de doter n'importe quel objet JTable d'une fonctionnalité de réajustement automatiquement de la taille des colonnes en fonction du contenu de la table.

gus.graphic.table.columnsizeadjuster

Cette entité comporte deux classes dont le code source est donné ci-dessous :

Code:
package gus05.entity.gus.graphic.table.columnsizeadjuster;

import javax.swing.JTable;
import gus05.framework.core.Entity;
import gus05.framework.features.Give;

public class TableColumnSizeAdjuster implements Entity, Give {

    public String getName()            {return "gus.graphic.table.columnsizeadjuster";}
    public String getCreationDate()      {return "2011.04.15";}
   
    public void give(Object obj) throws Exception
    {new AdjusterHandler((JTable)obj);}
}

Code:
package gus05.entity.gus.graphic.table.columnsizeadjuster;

import java.awt.Component;

import javax.swing.JTable;
import javax.swing.SwingUtilities;
import javax.swing.event.TableModelEvent;
import javax.swing.event.TableModelListener;
import javax.swing.table.TableCellRenderer;
import javax.swing.table.TableColumn;
import javax.swing.table.TableColumnModel;

public class AdjusterHandler implements TableModelListener, Runnable {

   private JTable table;
   
   public AdjusterHandler(JTable table)
   {
      this.table = table;
      table.getModel().addTableModelListener(this);
      adjustColumnPreferredWidths(table);
   }

   public void tableChanged(TableModelEvent e)
   {SwingUtilities.invokeLater(this);}

   public void run()
   {adjustColumnPreferredWidths(table);}
   
   
   private void adjustColumnPreferredWidths(JTable table)
    {
       TableColumnModel columnModel = table.getColumnModel();
       for(int col=0;col<table.getColumnCount();col++)
       {
          int maxwidth = 0;           
          for(int row=0;row<table.getRowCount();row++)
          {
             TableCellRenderer renderer = table.getCellRenderer(row,col);
             Object value = table.getValueAt(row,col);
             Component comp = renderer.getTableCellRendererComponent(table,value,false,false,row,col);
             maxwidth = Math.max(comp.getPreferredSize().width,maxwidth);
          }
          TableColumn column = columnModel.getColumn(col);
          column.setPreferredWidth(maxwidth);
       }
    }
}
Gus
Gus
Admin

Messages : 249
Date d'inscription : 01/09/2009

http://www.gus05.com

Revenir en haut Aller en bas

Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum