【问题标题】:How to do Mouse Tracing in Jfreechart?如何在 Jfreechart 中进行鼠标跟踪?
【发布时间】:2011-09-16 07:00:59
【问题描述】:

谁能告诉我如何在 jfreechart 中实现鼠标跟踪?

【问题讨论】:

    标签: java jfreechart


    【解决方案1】:

    您可以将ChartMouseListener 附加到ChartPanel,在其上呈现图表和绘图。这是一个例子:

    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);
        }
    }    
    

    【讨论】:

    • 谢谢你能告诉我如何实现--当鼠标跟踪时,指针显示在图形线上,它在移动鼠标上移动,就像在股市图中一样??
    • 这个功能是内置的。您只需添加chartPanel.setHorizontalAxisTrace(true);chartPanel.setVerticalAxisTrace(true);
    • 我也实现了它,但是轴跟踪出现了令人耳目一新的问题,因为它变得模糊。你能告诉我如何摆脱这个吗?
    • 你的问题跑题了。如果您需要帮助,请创建一个新问题并详细描述您的新问题。
    • 使用轴轨迹线出现在图形上是否有什么方法可以在鼠标移动时只显示图形上的点而不是轨迹线?
    猜你喜欢
    • 2011-03-09
    • 2022-11-10
    • 2021-12-10
    • 1970-01-01
    • 1970-01-01
    • 2017-02-24
    • 1970-01-01
    • 1970-01-01
    • 2013-08-21
    相关资源
    最近更新 更多