Sous-classe dans un bloc try
Fermé
Fenlabise
-
15 mars 2013 à 19:22
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 16 mars 2013 à 19:03
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 16 mars 2013 à 19:03
A voir également:
- Sous-classe dans un bloc try
- Bloc-notes (windows) - Télécharger - Traitement de texte
- Code bloc - Télécharger - Langages
- Bloc note gratuit - Télécharger - Agendas & Calendriers
- Sorry this video can not be played. please try again or pick another video iptv - Forum Box et Streaming vidéo
- Retrouver photo de classe gratuitement ✓ - Forum Vos droits sur internet
3 réponses
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
15 mars 2013 à 19:37
15 mars 2013 à 19:37
Le problème est pourtant écrit noir sur blanc, et tu l'as même mis en gras :
Noms.java:115: variable tableNom might not have been initialized
AjoutLigne TableAugment = new AjoutLigne(tableNom, titre);
Noms.java:115: variable titre might not have been initialized
AjoutLigne TableAugment = new AjoutLigne(tableNom, titre);
Ligne 115 tu donnes en paramètre les tableaux tableNom et title, mais tu ne leur donne jamais de valeurs ! Initialises les et ce problème sera réglé.
Noms.java:115: variable tableNom might not have been initialized
AjoutLigne TableAugment = new AjoutLigne(tableNom, titre);
Noms.java:115: variable titre might not have been initialized
AjoutLigne TableAugment = new AjoutLigne(tableNom, titre);
Ligne 115 tu donnes en paramètre les tableaux tableNom et title, mais tu ne leur donne jamais de valeurs ! Initialises les et ce problème sera réglé.
final Object tableNom[][]; final String titre[]; if(touche.getKeyCode() == 113) { //touche F2 //on ajoute une nouvelle ligne dans tmNoms Object NouvelleLigne[] = {j, " ", new Boolean(false), j}; AjoutLigne TableAugment = new AjoutLigne(tableNom, titre);
KX,
merci pour ta réponse, mais ces deux variable, je les ai déclarées (initialisées) au début, je leur ai donné une valeur (voir le code) il est vrai non dans la sous-classe mais dans la classe. Que pouvais-je faire de plus; à moins de changer la structure de l'algorythme c'est-à-dire de leur redonner une nouvelle valeur dans la sous-classe.
Se pose encore pour moi la question du bloc try :
car pour une méthode, on peut faire rentrer une variable dans une méthode et faire ressortir une variable par le mot clef return mais pour le bloc try, je peux faire rentrer une variable avec sa valeur mais plus la faire ressortir car cette variable devient alors "null" . Y a-t-il un remède car pour moi c'est un véritable problème.
J'espère que tout est clair.
Merci beaucoup pour l'aide apporté.
Fenlabise.
merci pour ta réponse, mais ces deux variable, je les ai déclarées (initialisées) au début, je leur ai donné une valeur (voir le code) il est vrai non dans la sous-classe mais dans la classe. Que pouvais-je faire de plus; à moins de changer la structure de l'algorythme c'est-à-dire de leur redonner une nouvelle valeur dans la sous-classe.
Se pose encore pour moi la question du bloc try :
car pour une méthode, on peut faire rentrer une variable dans une méthode et faire ressortir une variable par le mot clef return mais pour le bloc try, je peux faire rentrer une variable avec sa valeur mais plus la faire ressortir car cette variable devient alors "null" . Y a-t-il un remède car pour moi c'est un véritable problème.
J'espère que tout est clair.
Merci beaucoup pour l'aide apporté.
Fenlabise.
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
16 mars 2013 à 18:50
16 mars 2013 à 18:50
"ces deux variable, je les ai déclarées (initialisées) au début, je leur ai donné une valeur"
Oui, et non...
Tu as effectivement déclaré et initialisé deux tableaux tableNom et titre au début, mais ce ne sont pas ceux là qui sont utilisés dans le KeyListener ! En effet tu as créé deux autres tableaux de même noms déclarés à l'intérieur du KeyListener (ligne 110 et 111) et ce sont ceux qui sont appelés car ils sont le plus interne dans la hiérarchie, or ils ne sont pas initialisés donc ça plante.
Tu devrais enlever les deux tableaux lignes 110 et 111 et n'utiliser que ceux qui ont une valeur (mais il faudra les déclarer final).
Oui, et non...
Tu as effectivement déclaré et initialisé deux tableaux tableNom et titre au début, mais ce ne sont pas ceux là qui sont utilisés dans le KeyListener ! En effet tu as créé deux autres tableaux de même noms déclarés à l'intérieur du KeyListener (ligne 110 et 111) et ce sont ceux qui sont appelés car ils sont le plus interne dans la hiérarchie, or ils ne sont pas initialisés donc ça plante.
Tu devrais enlever les deux tableaux lignes 110 et 111 et n'utiliser que ceux qui ont une valeur (mais il faudra les déclarer final).
public void resultatNoms(Fenetre fenNoms) { final String titre[] = {"Clef", "Nom", "Nom ?", "j"}; try { //... final Object tableNom[][] = new Object[j][4]; //... fenNoms.addKeyListener(new KeyListener() { public void keyReleased(KeyEvent touche) { if(touche.getKeyCode() == KeyEvent.VK_F2) { //... AjoutLigne TableAugment = new AjoutLigne(tableNom, titre); //... } } //... }); //... } catch(SQLException e) { e.printStackTrace(); } }
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
16 mars 2013 à 19:03
16 mars 2013 à 19:03
Remarque : toute ta partie sur le dimensionnement du tableau est mal pensé, tu lis les résultats un par un pour savoir combien tu as de lignes avant de créer un tableau de cette taille là, et relire à nouveau les enregistrements pour remplir le tableau, et après tu créés un JTable qui va lire le tableau ligne par ligne pour faire son affichage... C'est vraiment très lourd comme opérations !
Il faudrait que tu regardes un peu mieux comment fonctionne les Model, ça permet de manipuler les données d'un JTable beaucoup plus efficacement.
Il faudrait que tu regardes un peu mieux comment fonctionne les Model, ça permet de manipuler les données d'un JTable beaucoup plus efficacement.
public void ResultatNoms(Fenetre fenNoms) { DefaultTableModel model = new DefaultTableModel(); String columnIdentifiers[] = {"Clef", "Nom", "Nom ?", "j"}; model.setColumnIdentifiers(columnIdentifiers); try { Statement state = getInstance().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE); ResultSet result = state.executeQuery(RNoms); for (int i=1; result.next(); i++) { Object[] row = { result.getInt("NomClef"), result.getString("Nom"), NP[result.getInt("NomPrenom")], i }; model.addRow(row); } result.close(); state.close(); JTable table = new JTable(model); fenNoms.add(new JScrollPane(table));