Ajuster la taille des colonnes
Lorsque l'on utilise une jTable dans une application JAVA, le composant se présente comme un tableur Excel. Parfois il est préférable de fixer en dur la largeur des colonnes. De plus, il est possible également de bloquer le redimensionnement des colonnes.
import java.awt.Container;
import java.awt.FlowLayout;
import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;
/**
* Fixer la taille des colonnes
* http://www.fobec.com/java/991/fixer-largeur-une-colonne-jtable.html
* @author Axel 2010
*/
public class ColumnResizer {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
JFrame frame = new JFrame("Exemple JTable");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(600, 400);
JTable jTable = new JTable();
//Ajouter les données dans JTable
String[] headers = new String[]{"Marque", "Modele", "Ref"};
Object rows[][] = {{"Apple", "iPhone", "M1"},
{"Sony", "Xperia", "M2"},
{"Microsoft", "Lumia", "M3"},
{"Samsung", "Galaxy", "M4"}
};
DefaultTableModel tableModel = new DefaultTableModel(rows, headers);
jTable.setModel(tableModel);
Container container = frame.getContentPane();
container.setLayout(new FlowLayout());
//Bloquer le redimensionnement
jTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
/**
* fixer la largeur de la première colonne à 200 pixels
*/
TableColumn col = jTable.getColumnModel().getColumn(0);
col.setPreferredWidth(200);
/**
* fixer la largeur de la troisième colonne à 25 pixels
*/
col = jTable.getColumnModel().getColumn(2);
col.setPreferredWidth(25);
//GUI
JScrollPane jscrollPane = new javax.swing.JScrollPane();
jscrollPane.setViewportView(jTable);
frame.getContentPane().add(jscrollPane);
frame.setVisible(true);
}
}
La class est un exemple de redimensionnement de colonne dans un jTable. Avec les données utilisées, la taille de la première colonne est fixée à 200 pixels et celle de la troisième colonne est de 25 pixels. De plus, la fonction setAutoResizeMode() bloque le redimensionnement des colonnes, donc l'utilisateur ne pourra pas adapter la largeur de la colonne avec la souris.