Problème avec ma JFrame

Fermé
aminaxy Messages postés 151 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 18 août 2016 - Modifié par aminaxy le 30/03/2012 à 16:00
aminaxy Messages postés 151 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 18 août 2016 - 31 mars 2012 à 16:40
Bonjour,

j'ai un problème avec mon JPanel,en effet je n'arrive pas à le faire apparaître dans ma JFrame,j'ai créer une classe qui hérite de JPanel,et je doit l'appeler dans ma 2éme classe qui hérite de JFrame,or j'aurai des exeptions de type :

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException

voici mon code de la classe qui hérite de jPanel:

import java.awt.Color; 
import java.awt.Dimension; 
import java.awt.GradientPaint; 
import java.awt.GridLayout; 
import java.util.ArrayList; 
import java.util.List; 
  
import javax.swing.JFrame; 
import javax.swing.JPanel; 
  
import org.jfree.chart.ChartFactory; 
import org.jfree.chart.ChartPanel; 
import org.jfree.chart.JFreeChart; 
import org.jfree.chart.axis.NumberAxis; 
import org.jfree.chart.plot.CategoryPlot; 
import org.jfree.chart.plot.PlotOrientation; 
import org.jfree.chart.renderer.category.BarRenderer; 
import org.jfree.data.category.DefaultCategoryDataset; 
  
public class Graphique extends JPanel { 
  
 private static final long serialVersionUID = 1L; 
  
 /** titre : Le titre du graphique affiché en haut */ 
 private String titre; 
 /** ordonnee : le nom de l'axe des ordonnées */ 
 private String ordonnee; 
 /** abscisses : le nom de l'axe des abscisses */ 
 private String abscisse; 
 /** valeurs : les valeurs à afficher, elles sont triées par séries et par catégories*/ 
 private List<Float> valeurs; 
 /** series : la liste des séries */ 
 private List<String> series; 
 /** categories : la liste des categories */ 
 private List<String> categories; 
 /** legende : booleen vrai si on affiche la légende */ 
 private boolean legende; 
 /** couleurFond : la couleur du fond */ 
 private Color couleurFond; 
 /** couleurBarres : les couleurs appliquées aux barres */ 
 private Color[] couleursBarres = {Color.cyan.darker(),  
   Color.red, Color.green, Color.cyan, Color.magenta,  
   Color.yellow, Color.pink, Color.darkGray, Color.orange}; 
  
 /** 
  * Constructeur 
  * @param titre : le titre du graphique 
  * @param abscisse : le nom de l'axe des abscisses 
  * @param ordonnee : le nom de l'axe des ordonnées 
  * @param valeurs : les valeurs 
  * @param fond : la couleur de fond 
  * @param listeSeries : les séries 
  * @param listeCategory : les catégories 
  * @param legende : vrai si on affiche la légende 
  */ 
  
 public Graphique(String titre, String abscisse, String ordonnee, List<Float> valeurs, Color fond, List<String> listeSeries, List<String> listeCategory, boolean legende) { 
  super(new GridLayout(1,0)); 
  this.titre=titre; 
  this.ordonnee=ordonnee; 
  this.abscisse=abscisse; 
  this.valeurs=valeurs; 
  this.series=listeSeries; 
  this.categories=listeCategory; 
  this.legende=legende; 
  this.couleurFond=fond; 
  initialiser(); 
 } 
  
 /** 
  * Initialise le graphique 
  */ 
 private void initialiser(){ 
  DefaultCategoryDataset dataset = new DefaultCategoryDataset(); 
  int k = 0; 
  for ( int j=0; j<categories.size(); j++){ 
   for (int i=0; i<series.size(); i++){ 
    dataset.addValue(valeurs.get(k), series.get(i), categories.get(j)); 
    k++; 
   } 
  
  } 
  JFreeChart chart = ChartFactory.createBarChart( 
    titre,        // chart title 
    abscisse,     // domain axis label 
    ordonnee,       // range axis label 
    dataset,        // data 
    PlotOrientation.VERTICAL,  // orientation 
    legende,                    // include legend 
    true,                      // tooltips 
    false                      // URL 
  ); 
  
  // definition de la couleur de fond 
  chart.setBackgroundPaint(couleurFond); 
  
  CategoryPlot plot = (CategoryPlot) chart.getPlot(); 
  
  //valeur comprise entre 0 et 1 transparence de la zone graphique 
  plot.setBackgroundAlpha(0.9f); 
  
  NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis(); 
  rangeAxis.setStandardTickUnits(NumberAxis.createIntegerTickUnits()); 
  
  BarRenderer renderer = (BarRenderer) plot.getRenderer(); 
  renderer.setDrawBarOutline(false); 
  
  // pour la couleur des barres pour chaque serie 
  
  for (int s=0; s<series.size(); s++){ 
   GradientPaint gp0 = new GradientPaint(0.0f, 0.0f, couleursBarres[s], 
     0.0f, 0.0f, new Color(0, 40, 70)); 
   renderer.setSeriesPaint(s, gp0); 
  
  }   
  
  ChartPanel chartPanel = new ChartPanel(chart); 
  chartPanel.setFillZoomRectangle(true); 
  chartPanel.setMouseWheelEnabled(true); 
  chartPanel.setPreferredSize(new Dimension(500, 270)); 
  
  add(chartPanel); 
 } 
  
 /** 
  * Création d'un graphique 
  * @param a 
  */ 
 public static void main(String[] a){ 
  List<Float> donnees = new ArrayList<Float>(); 
  List<String> l1 = new ArrayList<String>(); 
  List<String> l2 = new ArrayList<String>(); 
  l2.add("0"); 
  l1.add("1"); 
  l1.add("2"); 
  l1.add("3"); 
  l1.add("4"); 
  donnees.add(2f); 
  donnees.add(3f); 
  donnees.add(4f); 
  donnees.add(4f); 
 } 
  
} 


et voilà comment j'ai appeler la classe qui hérite de jPanel dans la classe qui hérite de JFrame:


public static void main(String args[]) { 
  
        /* Create and display the form */ 
        java.awt.EventQueue.invokeLater(new Runnable() { 
  
  
            public void run() { 
  
               JFrame f = new JFrame(); 
  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
  f.setBounds(10,10,500,500); 
  
               try{ 
                  Graphique  g = new Graphique("titre", "x", "y", donnees, Color.white, l2, l1, true); 
                  f.add(g); 
               } 
  catch (Exception e){ 
                    e.printStackTrace(); 
                } 
                f.setVisible(true); 
  
            } 
        }); 
    } 


si quelqu'un peu m'aider à résoudre à le probléme et merci

4 réponses

leen.net Messages postés 212 Date d'inscription lundi 31 janvier 2011 Statut Membre Dernière intervention 14 mai 2014 13
30 mars 2012 à 16:02
essaye d'ajoute après f.setVisible(true);
f.pack();
0
aminaxy Messages postés 151 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 18 août 2016 1
30 mars 2012 à 16:35
bonjour leen.net,
voilà c que j'ai comme toujours les erreurs d'exceptions même avec f.pack():

java.lang.NullPointerException
at Graphique.initialiser(Graphique.java:77)
at Graphique.<init>(Graphique.java:68)
at testgraph1$1.run(testgraph1.java:188)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:642)
at java.awt.EventQueue.access$000(EventQueue.java:85)
at java.awt.EventQueue$1.run(EventQueue.java:603)
at java.awt.EventQueue$1.run(EventQueue.java:601)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:612)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
0
leen.net Messages postés 212 Date d'inscription lundi 31 janvier 2011 Statut Membre Dernière intervention 14 mai 2014 13
30 mars 2012 à 16:55
je veux te montrer ce que je fais dans mes programmes et ca marcherait
Dans la premiere classe c'est a dire dans Graphique j'herite JFrame et j'ecris :
 setDefaultCloseOperation (JFrame.EXIT_ON_CLOSE);
 setSize(500,500);
JPanel p3 = new JPanel();

et je fais ajouter les ArrayList sur Jpanel
et enfin j'ecris:
 
add(p);
pack();
setVisible(true);

et dans la deuxième classe (main)
j'écris:
new Graphique("titre", "x", "y", donnees, Color.white, l2, l1, true);
0
aminaxy Messages postés 151 Date d'inscription jeudi 1 septembre 2011 Statut Membre Dernière intervention 18 août 2016 1
31 mars 2012 à 16:40
ok merci bien leen.net je vais essayer :D
0