2011-09-16 10 views

risposta

5

È possibile allegare un ChartMouseListener a un ChartPanel, su cui vengono visualizzati grafici e grafici. Ecco un esempio:

public class JFreeChartTest extends JFrame { 

    private static JFreeChart createPieChart(){ 
     // Some dataset to display 
     DefaultPieDataset data = new DefaultPieDataset(); 
     data.setValue("Java", new Double(45.0)); 
     data.setValue("C++", new Double(20.0)); 
     data.setValue("Visual Basic", new Double(0.0)); 
     // Chart creation 
     return ChartFactory.createPieChart("Pie Chart", // title 
       data, // data 
       true, // include legend 
       true, false); 
    } 

    public JFreeChartTest(){ 
     initialize(); 
    } 

    private void initialize(){ 
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     setBounds(100, 100, 450, 300); 
     JPanel contentPane = new JPanel(); 
     contentPane.setBorder(new EmptyBorder(10, 10, 10, 10)); 
     contentPane.setLayout(new BorderLayout(0, 0)); 
     setContentPane(contentPane); 
     { 
      final ChartPanel chartPanel = new ChartPanel((JFreeChart)null); 
      contentPane.add(chartPanel, BorderLayout.CENTER); 
      final JFreeChart pieChart = createPieChart(); 
      chartPanel.setChart(pieChart); 
      chartPanel.addChartMouseListener(new ChartMouseListener() { 

       @Override 
       public void chartMouseClicked(final ChartMouseEvent event){ 
        System.out.println("chartMouseClicked"); 
       } 

       @Override 
       public void chartMouseMoved(final ChartMouseEvent event){ 
        int newX = event.getTrigger().getX(); 
        int newY = event.getTrigger().getY(); 
        System.out.println("chartMouseMoved to " + newX + " " + newY); 
       } 
      }); 
     } 
    } 

    public static void main(String[] args){ 
     JFreeChartTest frame = new JFreeChartTest(); 
     frame.setVisible(true); 
    } 
}  
+0

Grazie per favore dimmi come implementare - mentre il tracciamento del mouse, visualizzazione puntatore sulla linea del grafico che si muove in linea sul mouse in movimento come nel grafico del mercato azionario ?? –

+3

Questa funzionalità è integrata. Hai solo bisogno di aggiungere 'chartPanel.setHorizontalAxisTrace (true);' e 'chartPanel.setVerticalAxisTrace (true);' –

+0

L'ho implementato anche, ma c'è un problema di aggiornamento con la traccia degli assi che diventa sfocata. puoi dire come uscire da questo? –

Problemi correlati