IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Applets Java Discussion :

Rafraichissement JFreechart dans un ChartPanel


Sujet :

Applets Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut Rafraichissement JFreechart dans un ChartPanel
    Bonjour ,

    J'utilise JFreechart pour tracer les graphiques et je les affiches dans un ChartPanel. Je veux que lorsque je choisi le type de graphique dans la ComboBox il me l'affiche dans le ChartPanel , le problème est que le graphique ne ce redéssine pas . J'ai testé repaint(); mais ca ne marche pas .


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     public void init() {
     
              setLayout(new BorderLayout());
              ChartPanel chartPanel = new ChartPanel(chart);
             add(chartPanel,BorderLayout.CENTER);

    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
     public void actionPerformed(ActionEvent e) {
     
              if(e.getSource()==choix_graph){
                   String item = (String) choix_graph.getSelectedItem();
     
               if(item.equals("Histogramme"))
               {
                    hystogramme = new Bar(this);
                    chart = hystogramme.createChart();
                   repaint();
     
               }
               if(item.equals("Camembert"))
               {
     
                   camembert = new Camembert(this);
                   chart = camembert.createChart();
                   repaint();
               } 
     
     
            }
     
        }
    Avez-vous des idées ?

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    La variable "chart" placée dans le chartPanel est écrasée par une nouvelle instance. Comment le chartPanel fait pour savoir que tu as créer une nouvelle instance ? Réponse : il ne le sait pas, et ne peut pas le savoir.
    Tu doit utiliser l'instance du chartPanel pour lui donner une nouvelle instance du "chart".
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    Tout d'abord merci de l'attention ,

    Si j'ai bien compris je fais (J'ai supprimer la création du ChartPanel dans init) :
    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
     public void actionPerformed(ActionEvent e) {
          ChartPanel chartPanel = new ChartPanel(chart);
                    add(chartPanel,BorderLayout.CENTER);
     
              if(e.getSource()==choix_graph){
                   String item = (String) choix_graph.getSelectedItem();
     
               if(item.equals("Histogramme"))
               {
                    hystogramme = new Bar(this);
                    chart = hystogramme.createChart();
                    chartPanel.repaint();
     
               }
               if(item.equals("Camembert"))
               {
     
                   camembert = new Camembert(this);
                   chart = camembert.createChart();
                   chartPanel.repaint();
               }                
     
            }
     
        }
    Si c'est comme cela les graphiques s'affichent mais (l'affichage bug) ils s'affichent les uns sur les autres et pour qu'ils s'affichent je dois agrandir puis réduire ma fenètre

  4. #4
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    Non, ce n'est pas du tout ça.
    ce que tu viens de faire, c'est ajouter des ChartPanel à l'infini !

    ChartPanel doit être un membre de ta classe. Dans "actionPerformed", tu créés ton nouveau "chart", puis tu supprimes celui contenu dans le "ChartPanel", et enfin tu ajoutes le nouveau "chart" dans le "ChartPanel".
    Je pense qu'un "repaint" sur le "ChartPanel" ne sera pas superflu pour mettre à jour l'affichage.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    Je crois avoir compris mais j'ai des exceptions lorsque le graphe devrais apparaître .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public ChartPanel chartPanel;
     
         JFreeChart chart;
     
        public void init() {
     
            setLayout(new BorderLayout());
            setSize(750,700);
     
              ChartPanel chartPanel = new ChartPanel(chart);
              add(chartPanel,BorderLayout.CENTER);
    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
     public void actionPerformed(ActionEvent e) {
     
              if(e.getSource()==choix_graph){
                   String item = (String) choix_graph.getSelectedItem();
     
               if(item.equals("Histogramme"))
               {
                    hystogramme = new Bar(this);
                    chart = hystogramme.createChart();
                    chartPanel.setChart(null);
                   chartPanel.setChart(chart);
                    chartPanel.repaint();
     
               }
               if(item.equals("Camembert"))
               {
     
                   camembert = new Camembert(this);
                   chart = camembert.createChart();
     
                 chartPanel.setChart(null);
                 chartPanel.setChart(chart);
                 chartPanel.repaint();
                 }
               }
    Les exceptions sont :
    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
     
    Exception in thread "AWT-EventQueue-1" java.lang.NullPointerException
            at applet_meteo.Fenetre.actionPerformed(Fenetre.java:191)
            at javax.swing.JComboBox.fireActionEvent(JComboBox.java:1242)
            at javax.swing.JComboBox.setSelectedItem(JComboBox.java:569)
            at javax.swing.JComboBox.setSelectedIndex(JComboBox.java:605)
            at javax.swing.plaf.basic.BasicComboPopup$Handler.mouseReleased(BasicComboPopup.java:814)
            at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:273)
            at java.awt.Component.processMouseEvent(Component.java:6038)
            at javax.swing.JComponent.processMouseEvent(JComponent.java:3265)
            at javax.swing.plaf.basic.BasicComboPopup$1.processMouseEvent(BasicComboPopup.java:480)
            at java.awt.Component.processEvent(Component.java:5803)
            at java.awt.Container.processEvent(Container.java:2058)
            at java.awt.Component.dispatchEventImpl(Component.java:4410)
            at java.awt.Container.dispatchEventImpl(Container.java:2116)
            at java.awt.Component.dispatchEvent(Component.java:4240)
            at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4322)
            at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3986)
            at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3916)
            at java.awt.Container.dispatchEventImpl(Container.java:2102)
            at java.awt.Component.dispatchEvent(Component.java:4240)
            at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
            at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:273)
            at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:183)
            at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:173)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:168)
            at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:160)
            at java.awt.EventDispatchThread.run(EventDispatchThread.java:121)
    Je pense que je m'approche de la solution . Quelles sont mes érreurs ?? J'ai oublié d'initialiser quelque chose ?

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 14
    Par défaut
    J'ai trouvé mon érreur .
    J'ai modifié :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     public void init() {
     
            setLayout(new BorderLayout());
            setSize(750,700);
           ChartPanel  chartPanel = new ChartPanel(chart); 
           add(chartPanel,BorderLayout.CENTER);
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     public void init() {
     
            setLayout(new BorderLayout());
            setSize(750,700);
            chartPanel = new ChartPanel(chart); 
           add(chartPanel,BorderLayout.CENTER);
    Une erreur toute bête . Je te remercie beaucoup de ton aide dinobogan .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Rafraichissement Jcombobox dans jtable
    Par palex dans le forum Composants
    Réponses: 1
    Dernier message: 29/08/2007, 11h52
  2. ajouter jfreechart dans eclipse
    Par docv266 dans le forum 2D
    Réponses: 2
    Dernier message: 08/08/2007, 15h16
  3. rafraichissement/contrôle dans invites
    Par Immo dans le forum Deski
    Réponses: 1
    Dernier message: 09/05/2007, 14h58
  4. [BCB 6]Problème Rafraichissement Table dans QReport
    Par arnaud_verlaine dans le forum C++Builder
    Réponses: 2
    Dernier message: 20/11/2006, 20h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo