Bonjour ;
je développe une petite application java pour récupérer les news en utilisant les flux RSS j'utilise sqlite comme base de données pour enregistrer les informations d'un site (tel que nom site ; url ; flux rss;favoris ou pas (1/0) j'ai une classe JFrame nommée (GestionSite) permet de visualiser tous les sites dans un panel ainsi que les sites favoris voici le code de la méthode permettant de le faire
j'ai une classe JPanel nommée ItemSite contenant deux boutons favoris (pour soit mettre un site dans la liste des favoris ou bien défavoriser pour mettre un site dans la liste principal et l'enlever des favoris)et supprimer pour supprimer un site
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 public String afficherLesSites() { panelPrefere.removeAll(); panelPrefere.repaint(); panelPrincipal.removeAll(); panelPrincipal.repaint(); ArrayList<Site> sites = null; sites = new ArrayList<Site>(); sites = SiteManager.listePrincipale; System.out.println("taile liste principale" + sites.size()); int pos = 10;//position liste site principale int pos2 = 10;//position liste site prefere ItemSite item; //affichage de tous les sites for (int i = 0; i < sites.size(); i++) { item = new ItemSite(); item.setNomSite(sites.get(i).getNomSite().toString()); item.setFav(sites.get(i).getFavoris()); item.setColor(); item.setBounds(10, pos, 600, 62); pos = pos + 64; panelPrincipal.add(item); if (panelPrincipal.getHeight() < pos) { panelPrincipal.setPreferredSize(new Dimension(700, panelPrincipal.getHeight() + 400)); panelPrincipal.repaint(); //activer le horizontal scrollbar jScrollPane1.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); } /** * *affichage liste favoris */ if (sites.get(i).getFavoris().equals("1")) { item = new ItemSite(); item.setNomSite(sites.get(i).getNomSite().toString()); System.out.println("sites.get(i).getNomSite().toString()" + sites.get(i).getNomSite() + ""); item.setFav(sites.get(i).getFavoris()); item.setColor(); item.setBounds(10, pos2, 600, 62); pos2 = pos2 + 64; System.out.println("nom site" + item.getNomSite()); panelPrefere.add(item); if (panelPrefere.getHeight() < pos2) { panelPrefere.setPreferredSize(new Dimension(700, panelPrefere.getHeight() + 400)); panelPrefere.repaint(); //activer le horizontal scrollbar jScrollpan2.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_ALWAYS); } } } return "les sites ont été affichés "; }
voici le code de cette classe
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 public String setColor() { if( isFav().equals("0")){ favoris.setIcon(new ImageIcon("noir.png")); favoris.setText("non favoris"); favoris.setToolTipText("site non favoris"); favoris.setBackground(Color.white); } //le site n' est pas favorisé else{ favoris.setIcon(new ImageIcon("jaune.png")); favoris.setText("favoris"); favoris.setToolTipText("site favorisé"); favoris.setBackground(Color.blue); } siteName.setText(getNomSite()); System.out.print("itemsitelabel"+siteName.getText()); return "le site"+nomSite+" a été bien coloré"; } private void favorisMousePressed(java.awt.event.MouseEvent evt) { if(isFav().equals("1")){ favoris.setIcon(new ImageIcon("jaune.png")); setFav("0"); favoris.setToolTipText("rendre favorisé"); favoris.setText("non favoris"); favoris.setBackground(Color.white); try { gs.crt.favorisToPrincipal(getNomSite()); System.out.print(" gs.crt.favorisToPrincipal(getNomSite())"+ gs.crt.favorisToPrincipal(getNomSite())); } catch (SQLException ex) { Logger.getLogger(ItemSite.class.getName()).log(Level.SEVERE, null, ex); } catch (ClassNotFoundException ex) { Logger.getLogger(ItemSite.class.getName()).log(Level.SEVERE, null, ex); } gs.afficherLesSites(); } else{ favoris.setIcon(new ImageIcon("noir.png")); setFav("1"); favoris.setToolTipText("rendre défavorisé"); favoris.setText("favoris"); favoris.setBackground(Color.blue); try { gs.crt.principalToFavoris(getNomSite());// c'est ici ou pointe l'erreur crt une instance de la classe Controller } catch (SQLException ex) { Logger.getLogger(ItemSite.class.getName()).log(Level.SEVERE, null, ex); } gs.afficherLesSites(); } } public String setColor() { if( isFav().equals("0")){ favoris.setIcon(new ImageIcon("noir.png")); favoris.setText("non favoris"); favoris.setToolTipText("site non favoris"); favoris.setBackground(Color.white); } //le site n' est pas favorisé else{ favoris.setIcon(new ImageIcon("jaune.png")); favoris.setText("favoris"); favoris.setToolTipText("site favorisé"); favoris.setBackground(Color.blue); } siteName.setText(getNomSite()); System.out.print("itemsitelabel"+siteName.getText()); return "le site"+nomSite+" a été bien coloré"; }
la classe Controller methode principalToFavoris
classe SiteManager methode prencipaleToPreferee
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 public ArrayList<Site> principalToFavoris(String site) throws SQLException { sm.prencipaleToPreferee(site); //sm instance de la classe SiteManager System.out.println("hollaaaaaaaaaaaaa" + sm.getListeSiteFavoris().size()); return sm.getListeSiteFavoris(); }
et le truc quand je clique sur le bouton favoris ou supprimer la table news ne se mets pas à jour
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 public String prencipaleToPreferee(String nomSite) throws SQLException { try { con = base.connectDB(); } catch (ClassNotFoundException ex) { Logger.getLogger(SiteManager.class.getName()).log(Level.SEVERE, null, ex); } String l = "1"; String sql = "UPDATE news SET favoris = 1 WHERE nomSite='" + nomSite + "' "; try { PreparedStatement ps = con.prepareStatement(sql); ps.execute(); con.commit(); } catch (SQLException e) { JOptionPane.showMessageDialog(null, e); e.printStackTrace(); System.out.println("Erreur SupprimerSite " + e.getMessage()); }
et j'ai une erreur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at vue.ItemSite.favorisMousePressed(ItemSite.java:192) at vue.ItemSite.access$100(ItemSite.java:21) at vue.ItemSite$2.mousePressed(ItemSite.java:93)
et j'arrive pas à trouver ou est le bug car tout me semble bien
quelqu'un à une solution merci d'avance
cordialement
Partager