Problemme avec un jTable

etudiant25_25gl Messages postés 4 Date d'inscription mercredi 17 janvier 2007 Statut Membre Dernière intervention 11 mars 2009 - 5 mars 2009 à 21:54
hafedhaouni Messages postés 62 Date d'inscription jeudi 18 février 2010 Statut Membre Dernière intervention 16 février 2012 - 9 mars 2009 à 21:20
salut a tout le monde
mon problemme est que j'ai pas pu faire le nobre de ligne de tableau (rows) changable c'est a dire
parexemple si je fais un jTabl de 100 ligne et 5 colomns l'orsque j'exicute le programe et je remplie le tableau avec 100 lignes je tembe dans un erreur c'est pour ça je veux que le nobre de line va etre dynamique .en fin je vous remercie d'avence .

1 réponse

hafedhaouni Messages postés 62 Date d'inscription jeudi 18 février 2010 Statut Membre Dernière intervention 16 février 2012 1
9 mars 2009 à 21:20
1) Crée la classe RecordModel
******************************************************






import data.gen.Record;




import java.sql.Date;
import java.sql.SQLException;
import java.util.Vector;




import javax.swing.table.AbstractTableModel;




import util.date.RecordDate;




public class RecordModel extends AbstractTableModel {
 protected Vector vElement;




 protected Vector vName;




 protected int colCount;
 
 protected int invisibleColCount;
 
 public RecordModel(int colCount,int invisibleColCount) {
  this(colCount);
  this.invisibleColCount = invisibleColCount ;
 
 }




 public RecordModel(int colCount) {
  this.colCount = colCount;
  invisibleColCount =0;
  vElement = new Vector();
  vName = new Vector();
 }




 public int getRowCount() {
  // TODO Auto-generated method stub
  return vElement.size();
 }




 public int getColumnCount() {
  // TODO Auto-generated method stub
  return colCount-invisibleColCount;
 }




 public String getColumnName(int arg0) {
  // TODO Auto-generated method stub
  return (String) vName.elementAt(arg0);
 }




 public Object getValueAt(int arg0, int arg1) {
  // TODO Auto-generated method stub
  Record rec = (Record) vElement.elementAt(arg0);
  return rec.getValue(arg1);
 }




 public void addElement(Record rec) {
  vElement.addElement(rec);
 }




 public void removeAllElements() {
  vElement.removeAllElements();
 }




 public void removeAllNames() {
  vName.removeAllElements();
 }




 public void addName(String name) {
  vName.addElement(name);
 }




 public Record getValueAt(int arg0) {
  // TODO Auto-generated method stub
  Record rec = (Record) vElement.elementAt(arg0);
  return rec;
 }
 
  /*
     * JTable uses this method to determine the default renderer/
     * editor for each cell.  If we didn't implement this method,
     * then the last column would contain text ("true"/"false"),
     * rather than a check box.
     */
    public Class getColumnClass(int c) {
     try{
      return getValueAt(0, c).getClass();
     }catch(java.lang.NullPointerException e){
      return String.class;
     }
    }
   
    /*
     * Don't need to implement this method unless your table's
     * editable.
     */
    public boolean isCellEditable(int row, int col) {
         return true;
       
    }
    /*
     * Don't need to implement this method unless your table's
     * data can change.
     */
    public void setValueAt(Object value, int row, int col) {
     
     Record rec = (Record) vElement.elementAt(row);
     if(value instanceof Record){
      Object key;
      key = ((Record)value).getValue(0);
      rec.setValue(col, key);
     }else if (value instanceof java.util.Date){
      long time = ((java.util.Date)value).getTime();
      java.sql.Date date = RecordDate.convert(new Date(time));
   rec.setValue(col, date);
   
     }else
      rec.setValue(col, value);
     try {
   rec.mettreAJour();
  } catch (SQLException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
        fireTableCellUpdated(row, col);




      
      
    }




}
*******************************************************

2) Copie cette code:




protected



  RecordModel
rModel

;







protected


void



initTable() {



rModel = new

RecordModel(4);




String sql;




Query query;




sql = "select * ";




sql += "from Commande ";






 




//sql += "Order by code ";











query = new

Query(sql);




query.remplirModel(rModel);





jTable.setModel(rModel);





jTable.setVisible(true

);





jTable.revalidate();




}

RecordModel : cad le nbe de colonne que tu veux afficher dans la base (access par exemple)
0
Rejoignez-nous