Accueil > Forum > > > > Problème de JTable
Problème de JTable
mardi 12 juin 2007 à 22:41:35 |
Problème de JTable

greglover
|
Bonsoir, j'ai un problème avec une classe importante de mon programme, problème que je n'arrive pas à résoudre sauf en "trichant un peu" ce qui double le temps d'execution du traitement (pas cool) donc en gros j'ai une table récupérant les infos de la bdd l'utilisateur fait ses modifications et hop la table est parsé et les valeurs renvoyés à la bdd (update) La dernière colonne (montant facture) de la table est calculée en fonction des 3 colonnes précédentes (garderie matin, soir et mercredi). Si je suis le traitement : initialisation : - je rempli la table (select) - calcul la dernière colonne (à y réfléchir je sais pas pkoi puisque le champ garderie total enfant est justement ce montant calculé) là, l'utilisateur entre les valeurs puis...clic sur valider : met à jour la bdd (update) relance initialisation Je me retrouve à ce moment là avec les valeurs de garderie affichées dans le tableau et entrées dans la bdd (vérification faîtes) mais le montant total qui est bien affiché dans la dernière colonne n'est pas dans la bdd.. Pour qu'il y soit j'ai alors deux solutions : soit je triche comme je l'ai fais en ajoutant un update(false) (false permettant de faire le traitement silencieusement) soit je reclic sur valider et alors le montant total est, cette fois, présent dans la bdd. Je ne vois pas ou est mon erreur et je désespère de trouver la solution. J'espère que quelqu'un pourra m'aider. Cordialement Voici la classe complète (sauf bouton inutile à la compréhension du problème) pour que vous puissiez voir l'évolution du traitement : import java.awt.BorderLayout; import java.awt.Color; import java.awt.Dimension; import java.awt.Rectangle; import java.sql.DriverManager; import java.sql.SQLException; import java.text.DecimalFormat; import java.util.Date; import java.util.Vector;
import javax.swing.JButton; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.SwingConstants; import javax.swing.table.DefaultTableCellRenderer; import javax.swing.table.TableColumn;
import com.mysql.jdbc.Connection; import com.mysql.jdbc.ResultSet; import com.mysql.jdbc.ResultSetMetaData; import com.mysql.jdbc.Statement;
public class Garderie extends JPanel {
private static final long serialVersionUID = 1L; private Montalembert fenetre;
private JPanel entete; private JPanel main; private JScrollPane scrollPane; public JTable table = new JTable(); private JButton btn_valider = null;
/** * This is the default constructor */ public Garderie(Montalembert m) { fenetre = m; setLayout(new BorderLayout()); setBounds(new Rectangle(0, 0, 800, 570)); add(getEntete(), BorderLayout.NORTH ); } private JPanel getEntete() { if (entete == null) { entete = new JPanel(); entete.setLayout(null); entete.setPreferredSize(new Dimension(800, 30)); entete.add(getBtn_valider(), null); } return entete; } private JPanel getMain() { if (main == null) { main = new JPanel(); main.setSize(800, 570); main.setLayout(new BorderLayout()); scrollPane = new JScrollPane(table); scrollPane.setBorder(null); scrollPane.setPreferredSize(new Dimension(800, 570)); main.add(scrollPane, BorderLayout.CENTER); } return main; }
public void garderie() { try { setSize(800, 570); Vector columnNames = new Vector(); Vector data = new Vector(); try { // Se connecter à la base de donnée Class.forName("com.mysql.jdbc.Driver"); Connection connection = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/test_prog","root","" ); // Récupérer les données des élèves Statement stmt = (Statement) connection.createStatement(); String sql = "SELECT nom_enfant,prenom_enfant,classe_enfant,garderie_matin_enfant,garderie_soir_enfant,garderie_mercredi_enfant,garderie_total_enfant FROM enfant WHERE `garderie_enfant` = 'true' AND sortie_enfant='' ORDER BY classe_enfant DESC,nom_enfant,prenom_enfant"; ResultSet rs = (ResultSet) stmt.executeQuery( sql ); // Récupérer le titre des colonnes ResultSetMetaData md = (ResultSetMetaData) rs.getMetaData(); // Récupérer le nombre de colonne int columns = md.getColumnCount();
// Récupérer le nom des colonnes for (int i = 1; i <= columns; i++) { if (i==7){columnNames.addElement("MONTANT TTC");break;} columnNames.addElement( md.getColumnName(i).replace("_enfant", "").replace("_", " ").replace("garderie", "gard.").toUpperCase()); }
// Récupérer les données des colonnes // 1. Test si ya quelquechose à lire, donc test si la classe existe // 2. Remet le pointeur au début // 3.Tant qu'il y a quelquechose à lire if (rs.next()) { rs.beforeFirst(); while (rs.next()) { fenetre.setCourantPanel(Garderie.this); Vector row = new Vector(columns); //récupération des valeurs de la bdd //prépare la ligne for (int i = 1; i <= columns; i++) { row.addElement( rs.getString("nom_enfant") ); row.addElement( rs.getString("prenom_enfant") ); row.addElement( rs.getString("classe_enfant") ); row.addElement( rs.getString("garderie_matin_enfant") ); row.addElement( rs.getString("garderie_soir_enfant") ); row.addElement( rs.getString("garderie_mercredi_enfant")); row.addElement( rs.getString("garderie_total_enfant")); } // ajoute la ligne data.addElement( row ); } } else { JOptionPane.showMessageDialog(null, "Problème de base de donnée !!!", "Erreur", JOptionPane.ERROR_MESSAGE); } // Tout fermer rs.close(); stmt.close(); } catch(Exception e){} // Créer la table avec les données de la base TableModelCustom model = new TableModelCustom(data, columnNames); // Rends certaines colonnes éditables model.addEditableColumn(3); model.addEditableColumn(4); model.addEditableColumn(5); // Application du modèle au tableau table.setModel(model); // Redimensionne for (int i=0;i<=6;i++) { TableColumn column = table.getColumnModel().getColumn(i); switch (i) { case 0:column.setMaxWidth(160);column.setMinWidth(140);break; case 1:column.setMaxWidth(120);column.setMinWidth(100); break; case 2:column.setMaxWidth(80);column.setMinWidth(60);break; case 3:column.setMaxWidth(110);column.setMinWidth(100); break; case 4:column.setMaxWidth(110);column.setMinWidth(100);break; case 5:column.setMaxWidth(115);column.setMinWidth(100); break; case 6:column.setMaxWidth(100);column.setMinWidth(75); break; } } // Centre le contenu des cellules DefaultTableCellRenderer custom = new DefaultTableCellRenderer(); custom.setHorizontalAlignment(SwingConstants.CENTER); for (int k=0; k < table.getColumnCount(); k++) { table.getColumnModel().getColumn(k).setCellRenderer(custom); } // Autorise le redimensionnement manuel et interdit le déplacement de colonne table.getTableHeader().setReorderingAllowed(false); table.getTableHeader().setResizingAllowed(true); } catch (Exception e) {}
go_calcul(); // ajout du panneau add(getMain(), BorderLayout.CENTER); } public void go_calcul() { Calcul_garderie un_calcul = new Calcul_garderie(); for (int j = 0 ; j < table.getRowCount() ; j++) { DecimalFormat df = new DecimalFormat("########.00"); double montant=un_calcul.calculer(table.getValueAt(j, 0).toString(),table.getValueAt(j, 1).toString()); if (montant!=0) { table.setValueAt(df.format(montant), j, 6); } } } public void update(boolean confirm) { DataBaseImpl base = new DataBaseImpl(); base.setParametre("127.0.0.1","root","","test_prog"); try { base.open(); // parse for (int j = 0 ; j < table.getRowCount() ; j++) { base.execute("UPDATE `enfant` SET garderie_matin_enfant = "+table.getValueAt(j, 3)+" , garderie_soir_enfant = "+table.getValueAt(j, 4)+" , garderie_mercredi_enfant = "+table.getValueAt(j, 5)+", garderie_total_enfant = '"+table.getValueAt(j, 6).toString().replace(",", ".")+"' WHERE nom_enfant = '"+table.getValueAt(j, 0).toString().replace("'", "''")+"' AND prenom_enfant = '"+table.getValueAt(j, 1).toString().replace("'", "''")+"'"); } base.close(); if (confirm){ JOptionPane.showMessageDialog(null, "Modification prise en compte", "Confirmation", JOptionPane.INFORMATION_MESSAGE); } } catch(DataBaseException dbe) { JOptionPane.showMessageDialog(null, "Problème de base de donnée !!!", "Erreur", JOptionPane.ERROR_MESSAGE); } } /** * This method initializes btn_valider * * @return javax.swing.JButton */ private JButton getBtn_valider() { if (btn_valider == null) { btn_valider = new JButton(); btn_valider.setBounds(new Rectangle(570, 5, 101, 19)); btn_valider.setForeground(new Color(108, 3, 125)); btn_valider.setText("Valider"); btn_valider.setToolTipText("Valider"); btn_valider.addActionListener(new java.awt.event.ActionListener() { public void actionPerformed(java.awt.event.ActionEvent e) { update(true); garderie(); update(false);<= la triche est ici btn_imprimer.setVisible(true); lbl_intitule.setText("<= Et voilà !!!"); } }); } return btn_valider; } }
|
|
mercredi 13 juin 2007 à 01:12:34 |
Re : Problème de JTable

greglover
|
Réponse acceptée !
en fait j'ai résolu mon problème, c'est parce que ma classe Calcul calculait à partir de la bdd et non de la JTable
merci quand même
|
|
Cette discussion est classée dans : table, import, enfant, valider, garderie
Répondre à ce message
Sujets en rapport avec ce message
Mise à jour (refresh) d'une JTable [ par greglover ]
Bonjour,j'ai une JTable qui récupère des infos d'une bdd. Les cellules peuvent être éditées et le contenu renvoyé à la bdd par l'intermédiaire d'un bo
DatabaseException oui mais ou ??? [ par greglover ]
Bonsoir,j'ai un soucis avec ce code source, Eclipse me sort un DataBaseException mais je ne vois pas du tout pourquoi.J'ai rien changé et cela marchai
message java.lang.OutOfMemoryError [ par ulysse00 ]
salut je voulais afficher mes enrgistrement sur Jtable alors j'ai ce message java.lang.OutOfMemoryErrorException in thread "main" j'ai une table av
JTable supprimer ligne [ par crazysetup ]
Salut a tous, j'ai un problème et j'aimerais trouver la solution.J'ai créé une JTable avec un bouton ajouter qui ajoute des lignes vides et un autre s
Problème changement couleur ligne [ par gregorybts ]
Bonsoir,je souhaite changer la couleur des lignes ou montant_total est supérieu au montant_credit mais mon code change toute la JTable à partir du mom
Colorer des cellules d'un JTable Amaguiz [ par crjohnson ]
Salut les frères,Je bûche sur ce prob' depuis ce matin et je parviens toujours pas à atteindre mon but. J'aimerais colorer le fond des cellules sélect
Mélange Java et Python [ par viktor76 ]
Bonjour, j'essaye de créer une application Java qui appel du Python. L'application est assez simple je veux entrer un nombre et une fois cliquer sur l
JSlider renderer dans une JTable [ par malawih ]
Bonjour, J ai insere des JSlider dans une colonne d une JTable, en refinissant le renderer et l editor. Le probleme est que les slider ne sont pas mis
afficher contenu d'une table access? [ par spy2008 ]
salut , je veux afficher le contenu d'une table Access dans un JTable ,mon code à la compilation m'affiche cet erreur:G:\BDD\AfficherMessage.java:25
jtable [ par jeeb2009 ]
bonsoir j ai un probleme avec une jtable.. je souhaite la charger et l afficher mais je n ai aucun resultat apres l execution. voici mon code: import
Livres en rapport
|
Derniers Blogs
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|