Sous-classe dans un bloc try
Fermé
Fenlabise
-
15 mars 2013 à 19:22
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 16 mars 2013 à 19:03
KX Messages postés 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 - 16 mars 2013 à 19:03
A voir également:
- Sous-classe dans un bloc try
- Bloc note gratuit - Télécharger - Agendas & Calendriers
- Bloc note windows - Télécharger - Traitement de texte
- Code bloc - Télécharger - Langages
- Bloc invisible minecraft - Forum Minecraft
- Classe ram - Guide
3 réponses
KX
Messages postés
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
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
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
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
16734
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
24 avril 2024
3 015
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));