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 :

Modifier plusieurs Cellules JTable et données d'une Table


Sujet :

Composants Java

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2008
    Messages
    107
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 107
    Par défaut Modifier plusieurs Cellules JTable et données d'une Table
    Bonjour Tous,

    j'affiche les données d'une base dans un jtable editable.

    l'utilisateur doit modifier une ou plusieurs cellules de lignes et ces modifications doivent être appliqué dans le jtable et dans la base après une action sur 1 bouton de commande ou à la fermeture du frame.
    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
     
    public class Etudiant {
    	private int id_etudiant;
    	private String sexe;
    	private String nom;
    	private String prenom;
    	private String Ville;
    	private String pays;
    	private String datenai;
    	public Etudiant(){
    	}
    	public Etudiant(int id_etudiant,String sexe,String nom,String prenom,String ville,String pays,String datenai){
    		this.id_etudiant=id_etudiant;
    		this.sexe=sexe;
    		this.nom=nom;
    		this.prenom=prenom;
    		this.Ville=ville;
    		this.pays=pays;
    		this.datenai=datenai;
    	}
    	public String getPrenom() {
    		return prenom;
    	}
    	public void setPrenom(String prenom) {
    		this.prenom = prenom;
    	}
    	public String getNom() {
    		return nom;
    	}
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
    	public int getId_etudiant() {
    		return id_etudiant;
    	}
    	public void setId_etudiant(int id_etudiant) {
    		this.id_etudiant = id_etudiant;
    	}
    	public String getSexe() {
    		return sexe;
    	}
    	public void setSexe(String sexe) {
    		this.sexe = sexe;
    	}
    	public String getVille() {
    		return Ville;
    	}
    	public void setVille(String ville) {
    		this.Ville = ville;
    	}
    	public String getPays() {
    		return pays;
    	}
    	public void setPays(String pays) {
    		this.pays = pays;
    	}
    	public String getdatenai() {
    		return datenai;
    	}
    	public void setdatenai(String datenai) {
    		this.datenai = datenai;
    	}
    }
    Le model
    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
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import javax.swing.table.AbstractTableModel;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    public class LeModel extends AbstractTableModel{
    	private ArrayList<Etudiant> Liste =new ArrayList<Etudiant>();
    	private final String []entetes={"Id","Sexe","Nom","Prenom","Ville","Pays","Date"};
    	String user="root";
    	String mdp="monpass";
    	String url ="jdbc:mysql://localhost:3306/mabase";
    	Connection conn;
    	ResultSet result;
    	Statement  state;
    		public LeModel(){
    			super();
    			try {
    				Class.forName("com.mysql.jdbc.Driver");
    		     	conn =DriverManager.getConnection(url,user,mdp);
    			    state=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
    			    result=state.executeQuery("select id_etudiant,sexe_etudiant,nom_etudiant,prenom_etudiant,ville_etudiant,pays_etudiant,datenais_etu from etudiant limit 15");
    			    while(result.next()){
    			    	Liste.add(new Etudiant(result.getInt(1),result.getString(2),result.getString(3), result.getString(4),result.getString(5),result.getString(6),result.getString(7)));
    			    }
    			} catch (Exception e) {
    				e.printStackTrace();
    			}
    		}
    		@Override
    		public int getColumnCount() {
    			return entetes.length;
    		}
    		@Override
    		public int getRowCount() {
    			return Liste.size();
    		}
    		@Override
    		public Object getValueAt(int rowindex, int ColumnIndex) {
    			switch (ColumnIndex) {
    			case 0:
    				return Liste.get(rowindex).getId_etudiant();
    			case 1:
    				return Liste.get(rowindex).getSexe();
    			case 2:
    				return Liste.get(rowindex).getNom();
    			case 3:
    				return Liste.get(rowindex).getPrenom();
    			case 4:
    				return Liste.get(rowindex).getVille();
    			case 5:
    				return Liste.get(rowindex).getPays();
    			case 6:
    				return Liste.get(rowindex).getdatenai();
    			default:
    			return null;
    			}
    		}
     
    		public String getColumnName(int ColumnIndex) {
    			return entetes[ColumnIndex];
    		}
    		@Override
    	    public boolean isCellEditable(int row, int col) {
    	        return true;
    	    }
    		public void addRow() {
    			Liste.add(new Etudiant());
    	        fireTableRowsInserted(Liste.size()-1, Liste.size()-1);
    	    }
    		@Override
    		public void setValueAt(Object value, int rowIndex, int columnIndex){
     
    			if(value!=null){
    				Etudiant e=Liste.get(rowIndex);
     
    				switch(columnIndex){
    				case 0:
    				try{					e.setId_etudiant(Integer.parseInt((String)value));				 	
    					break;
    					}
    					catch(NumberFormatException i){
    						e.setId_etudiant(0);
    						break;
    					}
    				case 1:
    					e.setSexe((String)value);	
    					break;
    				case 2:
    					e.setNom((String)value);
    					break;
    				case 3:
    					e.setPrenom((String)value);	
    					break;
    				case 4:
    					e.setVille((String)value);
    					break;
    				case 5:
    					e.setPays((String)value);
    					break;
    				case 6:
    					e.setdatenai((String)value);
    					break;
    				}
    			}
    		}
    	 }
    la fenetre
    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
    import java.awt.BorderLayout;
    import java.awt.Color;
    import java.awt.Dimension;
    import java.awt.Toolkit;
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.util.ArrayList;
     
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.JTextField;
    import javax.swing.table.TableColumn;
    public class MainFrame  extends JFrame{
    	private JPanel leConteneur=new JPanel();
    	private JPanel Haut=new JPanel();
    	private JPanel bas=new JPanel();
    	private JPanel centre=new JPanel();
    	private JButton btnAjout=new JButton("Ajout ligne");
    	private JButton btnAct=new JButton("Actualiser");
    	private JTable LeTableau;
    	private LeModel donees;
     
    	public MainFrame(){
    		this.setTitle("Ma Requête dans Une Jtable");
    		this.setSize(800, 500);
    		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    		this.setLayout(new BorderLayout());
    		donees =new LeModel();
    		LeTableau=new JTable(donees);
    		Haut.setBackground(Color.GRAY);
    		bas.setBackground(Color.GRAY);
    		bas.add(btnAjout);
    		bas.add(btnAct);
    		centre.add(new JScrollPane(LeTableau));
    		this.setLocationRelativeTo(null);
    		this.getContentPane().add(Haut,BorderLayout.NORTH);
    		this.getContentPane().add(centre,BorderLayout.CENTER);
    		this.getContentPane().add(bas,BorderLayout.SOUTH);
    		//Modif Taille colonne
    //		LeTableau.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
    //		TableColumn col=LeTableau.getColumnModel().getColumn(0);
    //		col.setPreferredWidth(50);
    		btnAjout.addActionListener(new ActionListener() {
    		@Override
    		public void actionPerformed(ActionEvent arg0) {
    			donees.addRow();
    		}
    		});
     
    		btnAct.addActionListener(new ActionListener() {
    						@Override
    			public void actionPerformed(ActionEvent arg0) {
     
    		});
    	}
    	}
    je veux en fait simuler une tache d'excel.
    je pense qu'il va me falloir identifier toutes les lignes contenant au moins une cellule qui a été modifié (chose que j'ai du mal à faire).
    recuperer Toutes les données de cette ligne(dans une collection ou autres) afin de pouvoir faire un update dans la base sur le critère de l'id (colonne 0)

    J'espère avoir mieux expliquer ma preoccupation
    Merci pour Votre Aide
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/06/2006, 12h05
  2. [MySQL] Modifier une donnée dans une table
    Par leloup84 dans le forum PHP & Base de données
    Réponses: 27
    Dernier message: 02/02/2006, 13h25
  3. [JTable] Récupérer données d'une cellule éditée
    Par lilou77 dans le forum Composants
    Réponses: 9
    Dernier message: 14/09/2005, 10h34
  4. comment modifier les données d'une table à travers un dbgrid
    Par bertrand_declerck dans le forum Bases de données
    Réponses: 12
    Dernier message: 19/07/2005, 09h51
  5. MySQL Administrator : modifier les données d'une table
    Par Robinounou dans le forum Outils
    Réponses: 4
    Dernier message: 13/07/2005, 17h21

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