Bonjour, je dois créer une application en JAVA qui permet de gérer une bibliothéque de DVD selon la méthode MVC....jusqu'ici tout va bien sauf que j'ai un problème dans mes évènements, j'ai cette erreur récurrente :
le code de mon listener est le suivant :Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at controleurs.ControleurButtonRechercher.actionPerformed(ControleurButtonRechercher.java:27)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
celui de ma vue :
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 package controleurs; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.AbstractButton; import vues.InterfaceVue; import vues.VueMAJ; import modeles.Modele; import modeles.ModeleMAJ; public class ControleurButtonRechercher implements ActionListener{ ModeleMAJ m; VueMAJ vue; AbstractButton widget; public ControleurButtonRechercher(AbstractButton b) { widget = b; } public void actionPerformed(ActionEvent e) { m.RechercherFilm(vue.textchamp.getText()); vue.textTitre.setText(m._titre); vue.textRealisateur.setText(m._rea); vue.textGenre.setText(m._genre); vue.textActeur1.setText(m._acteur); } }
et celui de mon modele :
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 package vues; import java.awt.*; import java.awt.event.ActionListener; import javax.swing.*; import modeles.Modele; import controleurs.ControleurButtonModifier; import controleurs.ControleurButtonRechercher; public class VueMAJ implements InterfaceVue{ //ControleurButtonRechercher _ctrl ; Modele _mod; JFrame frame=new JFrame("Mise à jour d'un film"); JPanel pnlAll = new JPanel(); JLabel lblTitle = new JLabel("Mise à jour d'un film :"); JPanel pnlRecherche = new JPanel(); JLabel lblTitle2 = new JLabel("Recherche d'un film :"); JLabel lblchamp = new JLabel("Film à rechercher :"); public JTextArea textchamp = new JTextArea (); JButton btnRech = new JButton("Rechercher"); ControleurButtonRechercher ctrl = new ControleurButtonRechercher(btnRech); JPanel pnlModif = new JPanel(); JLabel lblChampTitre = new JLabel("Titre du film"); public JTextArea textTitre = new JTextArea (); JLabel lblChampRealisateur = new JLabel("Realisateur du film"); public JTextArea textRealisateur = new JTextArea (); JLabel lblChampGenre = new JLabel("Genre du film"); public JTextArea textGenre = new JTextArea (); JLabel lblChampActeur1 = new JLabel("Acteur1 du film"); public JTextArea textActeur1 = new JTextArea (); JLabel lblChampActeur2 = new JLabel("Acteur2 du film"); JTextArea textActeur2 = new JTextArea (); JLabel lblChampActeur3 = new JLabel("Acteur3 du film"); JTextArea textActeur3 = new JTextArea (); JButton btnModif = new JButton("Modifier"); ControleurButtonModifier ctrl2 = new ControleurButtonModifier(btnModif); public VueMAJ(){ frame.setLayout(new FlowLayout()); pnlAll.setLayout(new BorderLayout(10,10)); pnlAll.add(lblTitle); frame.add(pnlAll); pnlRecherche.setLayout(new BorderLayout(5,5)); pnlAll.add(pnlRecherche,BorderLayout.NORTH); btnRech.addActionListener(ctrl); pnlRecherche.add(lblTitle2,BorderLayout.NORTH); pnlRecherche.add(lblchamp,BorderLayout.WEST); pnlRecherche.add(textchamp); pnlRecherche.add(btnRech,BorderLayout.SOUTH); pnlModif.setLayout(new GridLayout(7,2,10,10)); pnlAll.add(pnlModif,BorderLayout.SOUTH); pnlModif.add(lblChampTitre); pnlModif.add(textTitre); pnlModif.add(lblChampRealisateur); pnlModif.add(textRealisateur); pnlModif.add(lblChampGenre); pnlModif.add(textGenre); pnlModif.add(lblChampActeur1); pnlModif.add(textActeur1); pnlModif.add(lblChampActeur2); pnlModif.add(textActeur2); pnlModif.add(lblChampActeur3); pnlModif.add(textActeur3); pnlModif.add(btnModif); btnModif.addActionListener(ctrl2); frame.pack(); //On quitte l'application quand la fenêtre est fermée frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //Affichage de la fenêtre frame.setVisible(true); } public static void main(String[] args){ VueMAJ vue =new VueMAJ(); } }
si quelqu'un a un peu de temps pour aider un débutant en MVC comme moi ce serait cool! merci
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 package modeles; import java.sql.*; public class ModeleMAJ implements Modele{ private Connection maConnection; public String _titre; public String _rea; public String _genre; public String _acteur; public void OpenConnection(String url){ try { Class.forName("oracle.jdbc.driver.OracleDriver"); maConnection=DriverManager.getConnection(url); } catch (SQLException e){ System.err.println("Impossible connection"); return; } catch (Exception e){ System.err.println("Impossible de charger le driver"); return; } } public void CloseConnection(){ try { maConnection.close() ; } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void RechercherFilm(String t){ try { Statement monInstruction = maConnection.createStatement(); ResultSet monResultat = monInstruction.executeQuery("SELECT * FROM Film F, Acteur A, Individu I, Genre G WHERE NumFilm.F =NumFilm.G AND NumFilm.F = NumFilm.A AND NumIndividu.A = NumIndividu.I AND Titre = "+t); if(monResultat == null){ ResultSet monResultat2 = monInstruction.executeQuery("SELECT * FROM NvFilm F, NvActeur A, NvIndividu I, NvGenre G WHERE NumFilm.F =NumFilm.G AND NumFilm.F = NumFilm.A AND NumIndividu.A = NumIndividu.I AND Titre = "+t); if(monResultat2 == null){ _titre="rien trouve"; _genre="rien trouve"; _rea="rien trouve"; _acteur="rien trouve"; } else{ _titre=monResultat2.getString("Titre"); _rea=monResultat2.getString("Realisateur"); _genre=monResultat2.getString("CodeGenre"); _acteur=monResultat2.getString("NomIndividu"); } } else{ _titre=monResultat.getString("Titre"); _rea=monResultat.getString("Realisateur"); _genre=monResultat.getString("CodeGenre"); _acteur=monResultat.getString("NomIndividu"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } }![]()
Partager