Cherche spécialiste en jTable java
Je chercherai quelqu'un qui pourrai m'aider pour la manipulation d'une jTable. L'ajout de données est faite grâce à un model mais maintenant je dois supprimer une ligne sélectionnée et actualiser la jTable après l'ajout ou la suppression dans la jTable.
Merci pour ceux qui prendront le temps de m'aider.
Ce problème me bloque et ne me permet pas donc d'avancer dans mon projet ce qui est problématique.
Merci d'avance
49 réponses
Le problème porte sur la gestion d'une jTable où l'ajout se fait via un modèle, mais la suppression d'une ligne sélectionnée et l'actualisation de la table après ajout ou suppression restent problématiques. Des éléments de réponse suggèrent d'utiliser DefaultTableModel et de supprimer une ligne via removeRow, tout en étudiant la définition de méthodes comme DeleteResa et le rafraîchissement du modèle. D'autres contributions proposent d'actualiser des composants connexes comme un ComboBox après l'ajout, ou de partager des extraits montrant comment récupérer les colonnes et valeurs pour l'insertion en base. En cas de besoin, il est utile de vérifier le modèle utilisé et la synchronisation entre la JTable et la source de données pour garantir que les mises à jour s'appliquent rapidement.
-
ok
-
ben Oui si tu veux.
-
C'est quoi le probleme?
-
oui, mais tu modifies cette ligne par ça:
modelCmb.addElement(nomMembre+" "+prenomMembre);
par ça:
modelCmb.removeElement(nomMembre+" "+prenomMembre); -
1-Pour tester si une est Sélectionnée dans la table tu insères ça avant le code de suppression:
if(myTable.getSelectedRow()>=0)
{
// code supression
supprimer();
}
else
{
JOptionPane.showMessageDialog(mainPanel,"Veuillez Selectionner une ligne");
}
2-Pour Tester si un Vecteur est vide:
if(nomVecteur.isEmpty())
{
// Faire quelque chose
}-
Ca marche nikel :)
Je viens de voir un autre petit soucis concernant la suppression d'un membre dans la JTable,
Je voudrais que la aussi la JComboboxNom soit actualisé.
J'ai repris le code suivant :
//Rafraichissement de la jComboBoxNom
DefaultComboBoxModel modelCmb=(DefaultComboBoxModel)jComboBoxNom.getModel();
modelCmb.addElement(nomMembre+" "+prenomMembre);
Mais les variables nomMembre et prenomMembre ne sont pas défini.
Je suis obligé de les créés dans le programme principal su coup?
Encore merci sakoba ;)
-
-
Je suis de Retour. j'avais un problème de connexion
-
Ah ok lol, je croyais que tu m'avais laissé tombée!
J'ai des petits détails à régler.
-D'abord dans ma jTable, quand aucune ligne n'est sélectionné quand je veux supprimer, je voudrais qu'un message s'affiche pour dire de sélectionner un membre.
-Ensuite, je sais pas si tu connais les vecteurs ou pas. Si oui comment peut-on faire pour dire pareil que si le vecteur est vide, on affiche un message pour dire que le titre est joué par aucun groupe.
J'ai fais ceci mais ça ne marche pas :
if (info == null ) { System.out.print("ce titre nexiste pa" +rsOeuvreTitre); JOptionPane.showMessageDialog(this, "Ce titre est joué par aucun groupe. Veuillez choisir un autre groupe" , "Message", JOptionPane.INFORMATION_MESSAGE ); }
Info étant mon vecteur.
Enfin, je voulais savoir si tu t'y connaissais un peu en applet?
Merci beaucoup sakoba
-
-
Je ne suis pas un spécialiste de Oracle mais la solution Technique que je puisse te donner C'est que pour éviter les problèmes de format, généralement on utilise le type varchar au lieu de Date et cela vous permet d'inserer n'importe quel format de date dans ta colonne Date.
-
C'est quel logiciel tu utilise pour ta BD Oracle?
-
Donc commences par modifer le format par defaut de ton champs Datenaissane dans la Base de donées.
-
Je vois puisque tu n'as pas définit un format par défaut donc ta Base de données utilise le format Américain AAAA-MM-JJ.
Selon ton code:
Remplace ça:
Date date;
try
{
date = Date.valueOf(jTextFieldDate.getText());
}
Par ça:
String date;
try
{
//Retourne la date telle que défini dans la zone de texte
date = jTextFieldDate.getText();
}
Mais tu dois respecter ce format "2011-02-09" tant que tu n'as pas défini le tien -
Essais avec ce Format: 2011-02-09.
qu'est ce qu'il affiche? -
Qu'est ce qui se passe?
Il affiche une erreur ou C'est le format qui ne te convient pas?-
Ben en fait, je rentre une date au bon format et il me met une erreur comme quoi, je dois rentré au bon format^^.
Tiens le script de ma table membre :
CREATE TABLE MEMBRE
(
NUMPERSONNE NUMBER(3) NOT NULL,
NUMGROUPE NUMBER(3) NOT NULL,
RESPONSABILITEMEMBRE CHAR(32) NOT NULL,
DATENAISSANCEMEMBRE DATE NOT NULL,
NOMPERSONNE CHAR(32) NOT NULL,
PRENOMPERSONNE CHAR(32) NOT NULL,
TITRECIVILITE CHAR(4) NOT NULL
, CONSTRAINT PK_MEMBRE PRIMARY KEY (NUMPERSONNE)
) ;
Je n'est rien défini au niveau du format de la date au niveau de ma nase oracle.
Et je pense que ma requête concernant l'insertion est bonne.
-
-
là c'est un peu compliqué. bon passons à l'autre étape pendant que je modifie le code de tri pour toi.
-
T'es vraiment gentil ^^
Alors ben la j'ai un gros soucis concernant la date de naissance du membre quand je veux ajouter un membre dans ma base de données.
J'ai fais un code mais il ne marche pas :
Date date; try { date = Date.valueOf(jTextFieldDate.getText()); } catch (IllegalArgumentException e) { JOptionPane.showMessageDialog(null, "Rentrez une date au format yyyy/mm/dd" ); return; }*/
Et voici le code de ma requete dans la BDD oracle :
public class Insertion { private static Connection c; private static Statement stm; public static void insertResa( int numPersonne, int numGroupe, String responsabilite,Date date, String nomPersonne, String prenomPersonne, String civilite ) throws SQLException { try { // récupération de la connexion c = Connect.getCon(); stm = c.createStatement(); String sql = "INSERT into MEMBRE VALUES (" + numPersonne + "," + numGroupe + ",'" + responsabilite + "'," + date + ",'" + nomPersonne + "','" + prenomPersonne + "','" + civilite + "')"; // Execution de la requete stm.executeUpdate(sql); stm.close(); } catch(SQLException sqlE) { System.out.println("Sql Erreur " + sqlE.getMessage()); throw sqlE; } catch(Exception e) { System.out.println("Erreur " + e.getMessage()); } } }
-
-
Tu utilises quel Editeur(eclipse,netbeans,jcreator)?
-
Pour le Tri, Dans la Fonction "getJComboBoxNom()"
Remplace ça:
jComboBoxNom = new JComboBox(nomPrenom);
Par ça:
jComboBoxNom = new JComboBox(nomPrenom) {
public void addItem(Object anObject) {
int size = ((DefaultComboBoxModel) dataModel).getSize();
Object obj;
boolean added = false;
for (int i=0; i<size; i++) {
obj = dataModel.getElementAt(i);
int compare = anObject.toString().compareToIgnoreCase(obj.toString());
if (compare <= 0) {
super.insertItemAt(anObject, i);
added = true;
break;
}
}
if (!added) {
super.addItem(anObject);
}
}
};-
Ma JComboBoxNom ne s'affiche plus au chargement de l'applet
Voici mon code :
private JComboBox getJComboBoxNom() { if (jComboBoxNom == null) { jComboBoxNom = new JComboBox(nomPrenom) { public void addItem(Object anObject) { int size = ((DefaultComboBoxModel) dataModel).getSize(); Object obj; boolean added = false; for (int i=0; i<size; i++) { obj = dataModel.getElementAt(i); int compare = anObject.toString().compareToIgnoreCase(obj.toString()); if (compare <= 0) { super.insertItemAt(anObject, i); added = true; break; } } if (!added) { super.addItem(anObject); } } }; aaa(); } return jComboBoxNom; }
Merci beaucoup
-
-
Montres moi la fonction.
-
Bonjour Maria.
Non tu as une erreur dans ton code. tu as utilisé cet objet ComboBox "jComboBoxNom" comme le nom de Ton Model ça c'est une erreur.
Essais ça:
//modelCmb(ComboBoxModel) different de jComboBoxNom (ComboBox)
DefaultComboBoxModel modelCmb=(DefaultComboBoxModel)jComboBoxNom.getModel();
modelCmb.addElement(nomMembre+" "+prenomMembre); -
Selon ton Code:
mycmb.addElement(nomMembre+" "+prenomMembre);
Cette ligne actualise le ComboBox après l'ajout d'une nouvelle personne. -
Pour actualise le ComboBox après l'ajout:
//juste après le code d'actualisation de la table
DefaultComboBoxModel mycmb=(DefaultComboBoxModel)myCmb.getModel();
mycmb.addElement("Sakoba"); -
Montres moi le code qui s'applique au controle comboBox.
-
C'est un code barbare puisqu'il récupére les nom et prénom de tous les membres de la base et quand j'en sélectionne un, ces infos s'affiche des les différents graphiques de mon applet.
Voici le code :
private JComboBox getJComboBoxNom() { if (jComboBoxNom == null) { jComboBoxNom = new JComboBox(nomPrenom); jComboBoxNom.setBounds(new Rectangle(177, 26, 153, 20)); jComboBoxNom.setPreferredSize(new Dimension(120, 20)); aaa(); } return jComboBoxNom; }
private void aaa() { rsMembre = Select.ListeMembre(); try { while (rsMembre.next()) { Membre r = new Membre(); r.setnumPersonne(rsMembre.getInt(1)); r.setnumGroupe(rsMembre.getInt(2)); r.setresponsabiliteMembre(rsMembre.getString(3).trim()); r.setdateNaissanceMembre(rsMembre.getDate(4)); r.setnomPersonne(rsMembre.getString(5).trim()); r.setprenomPersonne(rsMembre.getString(6).trim()); r.settitreCivilite(rsMembre.getString(7).trim()); nomPrenom.add(r); } System.out.println(nomPrenom); } catch(Exception e) { System.out.println("Exception " + e.getMessage()); } jComboBoxNom.setSelectedIndex(-1); jComboBoxNom.addActionListener( new java.awt.event.ActionListener() { public void actionPerformed(ActionEvent ae) { infos.clear(); String nomPre = jComboBoxNom.getSelectedItem().toString(); System.out.println("+++++++++++++++++++++++>>>> Nom prénom: " + nomPre); int ind = nomPre.indexOf(" "); String nom = nomPre.substring(0, ind); jTextFieldNomMembre.setText(nom); ind = nomPre.lastIndexOf(" "); String prenom = nomPre.substring(ind +1); jTextFieldPrenomMembre.setText(prenom); rsMembre = Select.ListeMembre(); try { while (rsMembre.next()) { System.out.println("on a bien next..."); String nompersonne = rsMembre.getString("nompersonne"); System.out.println("nompersonne " + "\"" + nompersonne + "\""); nompersonne = nompersonne.trim(); if(nompersonne.equals(nom)) { System.out.println("on a bien égalité..."); String numgroupe = rsMembre.getString("numgroupe"); for(int index = 0; index < nbreGroupes; index++) { jComboBoxNumeroGroupe.setSelectedIndex(index); String nGroup = jComboBoxNumeroGroupe.getSelectedItem().toString(); if(numgroupe.equals(nGroup)) break; } String numpersonne = rsMembre.getString("numpersonne"); // Attention car ici on n'est pas certain d'avoir toutes les responsabilités // J'ai d'ailleurs déjà ajouté Coiffeuse pour le cas de Coiffard Pauline. // Chaque fois qu'un cas similaire se présentera il faudra recompiler // Tu seras d'accord avec moi que ce n'est pas acceptable // Mais supposons tout de même qu'on soit certain d'avoir tout avec: // Chauffeur, Maquilleuse, Coiffeuse, Habilleur, Dirigeant et Trésorier String responsabilitemembre = rsMembre.getString("responsabilitemembre"); //String resp = ""; for(int index = 0; index < 5; index++) { jComboBoxResponsabilité.setSelectedItem(index); String resp = jComboBoxResponsabilité.getSelectedItem().toString(); if(resp.equals(responsabilitemembre)) { break; } } String datenaissancemembre = rsMembre.getString("datenaissancemembre"); String prenompersonne = rsMembre.getString("prenompersonne"); // Ici, nous sommes certains de n'avoir que 3 items: Mme, Mlle et Mr // dis moi si je me trompe... // on peut donc admettre que la combo soit créée en dur String titrecivilite = rsMembre.getString("titrecivilite"); for(int index = 0; index < 3; index++) { jComboBoxTitre.setSelectedIndex(index); String civilite = jComboBoxTitre.getSelectedItem().toString(); if(civilite.equals(titrecivilite)) { break; } } jTextFieldNumeroMembre.setText(numpersonne); jTextFieldDate.setText(datenaissancemembre); System.out.println("numpersonne: " + numpersonne); System.out.println("datenaissancemembre: " + datenaissancemembre); break; } } } catch(Exception e) { System.out.println("Exception " + e.getMessage()); } } }); }
Je suis là si tu veux d'autres choses ou des questions.
Encore un grand merci à toi sakoba
-
- 1
- 2
- 3