Datagrid - présentation d'une requete en grille

Contenu du snippet

Cette classe est une dérivée de Jtable.
Elle permet d'afficher les données d'un resultset sous forme de grille.

Source / Exemple :


/**

  • @author duss
  • /
import javax.swing.*; // Librairie graphique import javax.swing.event.*; import javax.swing.table.AbstractTableModel; import java.awt.Color; import java.sql.*; /**
  • Classe permettant de construire une Jtable à partir d'un resultset
  • Les booléens sont affichés comme des checkbox
*
  • /
public class DataGrid extends JTable { private ResultSet res; private tModel model; public DataGrid(ResultSet rs, String tName) { res = rs; model = new tModel(res); setName(tName); setModel(model); setSelectionMode(ListSelectionModel.SINGLE_SELECTION); } public DataGrid(ResultSet rs) { res = rs; model = new tModel(res); setModel(model); setSelectionMode(ListSelectionModel.SINGLE_SELECTION); } public void setValues(ResultSet rs) { model = new tModel(rs); setModel(model); } public void setModif(boolean mod) { model.setModif(mod) ; } class tModel extends AbstractTableModel { private DbManager dbm = new DbManager(); private String[] columnNames = null; private Object[][] data = null; private boolean modif = false; public tModel(ResultSet res) { columnNames = getColNames(res); data = makeData(res); } // Méthode qui renvoit un Object[][] // à partir d'un ResultSet pour l'élaboration d'un DataGrid // @args -> le ResultSet public Object[][] makeData(ResultSet res) { ResultSetMetaData infos = null; Object[][] data = null; int colCount = 0; try { infos = res.getMetaData(); colCount = infos.getColumnCount(); } catch (SQLException E) { JOptionPane.showMessageDialog(null,"Erreur de connexion à la base. Veuillez contacter votre administrateur système","Connexion",JOptionPane.WARNING_MESSAGE); } int rowCount = this.recordCount(res); int i,j = 0; data = new Object[rowCount][colCount]; try { // Remplissage de data for (i = 0 ; i < rowCount ; i++) { res.absolute(i+1); for (j = 0 ; j < colCount ; j++) { int type = infos.getColumnType(j+1); switch (type) { case Types.CHAR : case Types.VARCHAR : case Types.LONGVARCHAR : data[i][j] = res.getString(j+1); break; case Types.TINYINT : { if ( infos.getPrecision(j+1) == 1) data[i][j] = new Integer(res.getInt(j+1)); else if (res.getInt(j+1) == 0) data[i][j] = new Boolean(false); else data[i][j] = new Boolean(true); break; } case Types.SMALLINT : case Types.INTEGER : data[i][j] = new Integer(res.getInt(j+1)); break; case Types.DATE : data[i][j] = res.getDate(j+1); break; default : break; } } } } catch (SQLException E) { JOptionPane.showMessageDialog(null,"Erreur de connexion à la base. Veuillez contacter votre administrateur système","Connexion",JOptionPane.WARNING_MESSAGE); } return data; } // Méthode qui renvoit le nom des colonnes d'un ResultSet // @args -> le ResultSet public String[] getColNames(ResultSet res) { ResultSetMetaData infos = null; String[] colName = null; int colCount = 0; try { infos = res.getMetaData(); colCount = infos.getColumnCount(); } catch (SQLException E) { JOptionPane.showMessageDialog(null,"Erreur de connexion à la base. Veuillez contacter votre administrateur système","Connexion",JOptionPane.WARNING_MESSAGE); } int j = 0; colName = new String[colCount]; try { //Remplissage de colName for (j = 0 ; j < colCount ; j++) colName[j] = infos.getColumnName(j+1); } catch (SQLException E) { JOptionPane.showMessageDialog(null,"Erreur de connexion à la base. Veuillez contacter votre administrateur système","Connexion",JOptionPane.WARNING_MESSAGE); } return colName; } public int getColumnCount() { return columnNames.length; } public void setModif(boolean mod) { modif = mod; } public int getRowCount() { return data.length; } public String getColumnName(int col) { return columnNames[col]; } public Object getValueAt(int row, int col) { String str = ""; if (data[row][col] == null) return str; else return data[row][col]; } public Class getColumnClass(int c) { return getValueAt(0,c).getClass(); } public boolean isCellEditable(int row, int col) { return modif; } public void setValueAt(Object val,int row, int col) { data[row][col] = val; fireTableCellUpdated(row, col); } } }

Conclusion :


Bon j'ai pas eu le temps de commenté trop mon code.
C'est promis je vais le faire !!

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.