IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants Java Discussion :

rafraichissement de données JTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti Avatar de matzeus
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut rafraichissement de données JTable
    bonjour a tous,
    j'ai un probleme avec mon tableau:
    lorsque je fais un changement de valeur dans une case puis que j'enregistre le tableau dans un fichier, c'est le tableau avant le changement de valeur qui est enregistre...
    mon table est construit a l'aide d'un model extends DefaultTableModel .
    il me semble que le changement de valeur devrait etre pris en compte assez simplement.
    j'ai essaye de mettre un fireTableCellUpdated(..) dans ma fonction setValue(...)
    du model mais ca ne change rien...
    Ai-je oublie un ecouteur ou bien qqchose comme ca?

    Si qqun pouvait m'eclairer ca serait sympa.
    merci d'avance.

  2. #2
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Un pti bout de code serait le bienvenu je pense

  3. #3
    Membre averti Avatar de matzeus
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut
    voila voila, j'espere que je t'aurai mis ce qu'il te faut...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
     
     
    this.model=new MonModel (this.data,this.columnNames);
    this.table = new JTable (model);
     
    protected class MonModel extends DefaultTableModel
    	{
     
    	public MonModel (Object[][] data, String[] columnNames)
    		{			
    		super(data,columnNames);
    		}
     
    	public int getColumnCount ()
    		{
    		return super.getColumnCount();
    		}
     
    	public int getRowCount ()
    		{
    		return super.getRowCount();
    		}
     
     
    	public void	setValueAt(Object aValue, int rowIndex, int columnIndex) 
    		{
    		super.setValueAt(aValue, rowIndex, columnIndex);
    		fireTableCellUpdated(rowIndex,columnIndex);
    		}
     
     
    	public String getColumnName (int col)
    		{
    		return super.getColumnName(col);
    		}
     
    	public void setColumnName(Object newName,int col)
    		{
    		super.columnIdentifiers.setElementAt(newName,col);
    		}
     
    	public Object getValueAt (int row, int col)
    		{
    		 return super.getValueAt(row,col);		
    		}
     
    	public void addColumn(Object newName, Object[] column)
    	 	{	 	
            	super.addColumn(newName, column);
        		}
     
    	public void addRow(Object[] ligne)
    		{
    		super.addRow(ligne);
    		}
     
    	public void removeRow(int ligne)
    		{
    		//System.out.println("ligne dans le data = "+ligne);
    		super.removeRow(ligne);
    		//fireTableRowsDeleted(ligne,ligne);
    		}
     
    	public boolean isCellEditable (int row, int column) 
    		{
    		if(isEditableCase(row,column))
    			{
    			return true;
    			}		
     
    		else
        		return false;
    		}
     
    	public void fireTableStructureChanged() 
    		{
        	fireTableChanged(new TableModelEvent(this,TableModelEvent.HEADER_ROW));
           	}	 
    }

    puis je rend editable et selectionnable la ligne ou la colonne que je veux depuis
    une fonction dans une autre classe

    en voila une petite partie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
     
     
    UneFoisL=0;
     
    ListSelectionModel rowSM = table.getSelectionModel();
    rowSM.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
    rowSM.addListSelectionListener(new ListSelectionListener() 
    	{
             public void valueChanged(ListSelectionEvent e) 
                   	{
                        //Ignore extra messages.
                        //if (e.getValueIsAdjusting()) return;
     
                     ListSelectionModel lsm = (ListSelectionModel)e.getSource();
                     lsm.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); 
                           if(UneFoisL==0)
                        	{    
                             table.setRowSelectionAllowed(true);
                             LigneCourante=lsm.getMinSelectionIndex();
                             System.out.println("le getMinSelectionIndex :"+lsm.getMinSelectionIndex());
                             ScrollTable.setEditableLigne(LigneCourante);
                            UneFoisL++;
                            }
     
                        if(UneFoisL==1 && lsm.getMaxSelectionIndex()!=LigneCourante)
                         	{
                         	//ScrollTable.modifLigne(LigneCourante);
                         	table.setRowSelectionAllowed(false);
                            System.out.println("dans le non edit de ligne"+UneFoisL+" la ligne courante"+LigneCourante);
                            ScrollTable.setNonEditableLigne(LigneCourante);
                            UneFoisL++;
                            }
    le seul probleme c'est que je pense qu'il faut appeler qq part la fonction setValue et getValue
    mais je ne sais pas où!!

    bref lorsque que je veux faire un enregistrement je fais ca:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
     
    public void Enregistrement(String cheminFic)
    {
    	int NbL = model.getRowCount();
    	int NbC = model.getColumnCount();
     
    	try
    		{
    		PrintWriter out = new PrintWriter (new FileWriter(cheminFic),true);
     
     
    		for(int i=0; i<NbL ; i++)
    			{
    			String tmpLigneDate="";
    			String tmpLigne = " ";
     
    			for(int j =0; j<NbC; j++)
    				{
    				if (j==0)
    					tmpLigneDate=(String)modelDate.getValueAt(i,j);
    				else
    				{	
    				if(j<4)
    					tmpLigneDate=tmpLigneDate+" "+modelDate.getValueAt(i,j);
     
    				tmpLigne = tmpLigne+" "+model.getValueAt(i,j);
    				}
    				}
     
    			tmpLigne =tmpLigneDate+tmpLigne;
     
    			out.println(tmpLigne);
    			}
    		out.close();					
    		}
    		catch (Exception e)
            	{
           		 e.printStackTrace();
            	System.err.println ("erreur à l'ouverture du fichier dans Enregistrement");
           		}
     
    }
    dis moi ce que tu en penses...

  4. #4
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    J'ai pas trop compris l'histoire du selectionlistener mais j'ai une question, as-tu un évènement qui valide le changement de valeur de ta cellule ? (genre "entrée" ou passage à une autre cellule (avec le selection listener justement) )

  5. #5
    Membre averti Avatar de matzeus
    Inscrit en
    Avril 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 52
    Par défaut
    non justement c'est cela que j aimerai savoir...
    je ne sais pas comment lui dire que si il y a un changement dans la cellule , qu'il le prenne en compte...
    si tu as une suggestion...merci d'avance

  6. #6
    Membre émérite Avatar de sozie9372
    Inscrit en
    Mai 2005
    Messages
    713
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mai 2005
    Messages : 713
    Par défaut
    Tu peux jouer sur la touche entrée par exemple ou le passage d'une cellule à une autre
    Jette un coup d'oeil ici, ca pourra surement t'aider...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [JTable] rafraichissement des données
    Par gari35 dans le forum Composants
    Réponses: 4
    Dernier message: 23/12/2009, 18h00
  2. Rafraichissement des données avec ADOConnection -SQL Server
    Par newfsch dans le forum Bases de données
    Réponses: 4
    Dernier message: 04/01/2006, 21h48
  3. [Form/ssForm] rafraichissement des données
    Par michaelbob dans le forum Access
    Réponses: 3
    Dernier message: 14/10/2005, 11h05
  4. Vitesse de rafraichissement des données
    Par StarMusic dans le forum Bases de données
    Réponses: 2
    Dernier message: 30/09/2005, 10h20
  5. question sur le rafraichissement des données dans la base
    Par vbcasimir dans le forum Bases de données
    Réponses: 8
    Dernier message: 06/06/2005, 12h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo