2016-12-26 110 views
3

基本上我想要的线图放大和缩小(总共4个按钮,2为X轴(放大和缩小)和其他两个Y轴)在按钮单击沿任何轴,如果图形绘制在负x轴和负Y轴区域上,具体取决于数据点,然后在按钮单击时应该基于按钮单击将图形放大并沿着该负x轴或负y轴缩小。单击JfreeChart折线图上的按钮放大和缩小功能?

我该如何做到这一点?任何示例代码与详细说明是非常有帮助的!

private JButton createZoom() 
{ 
     final JButton auto = new JButton("ZOOMIN"); 
     auto.setActionCommand("ZOOM_IN_DOMAIN"); 
     auto.addActionListener(new ChartPanel(chart)); 
     return auto; 
    } 

回答

4

每个按钮的Action实现应该调用使用ChartPanel创建它的缩放命令的弹出式菜单中的相应方法。 actionPerformed()的实现是可用缩放功能的便捷指南。例如,ZOOM_IN_DOMAIN_COMMAND通过调用zoomInDomain()来处理。在此基础上example,典型缩放X相对于原点的处理程序如下:

private JButton createZoom() { 
    final JButton zoomX = new JButton(new AbstractAction("Zoom X") { 

     @Override 
     public void actionPerformed(ActionEvent e) { 
      chartPanel.zoomInDomain(0, 0); 
     } 
    }); 
    return zoomX; 
} 

如果默认zoomPoint就足够了,你可以使用图表面板的实现:

private JButton createZoom() { 
    final JButton zoomX = new JButton("Zoom X"); 
    zoomX.setActionCommand(ChartPanel.ZOOM_IN_DOMAIN_COMMAND); 
    zoomX.addActionListener(chartPanel); 
    return zoomX; 
} 

zoomed image

相比之下,原始example中的createZoom()方法显示了如何唤起ChartPanel方法restoreAutoBounds(),它恢复两个轴上的自动量程计算。

image

+0

在该示例中引用您提供 “chartPanel.setMouseWheelEnabled(真)”;此行将导致图形沿着x轴,y轴和这两者的ZoomIn和ZoomOut。但我想要一个按钮点击功能,如果我按下按钮“xZoom”缩放应该沿x轴完成。类似地按下“yZoom”按钮缩放应该沿着y轴完成。只有当“按下“缩放”按钮应该对两个轴进行缩放。这是我的要求,你可以请帮助一些示例代码如何做到这一点。 – JAVA

+0

我已经在上面添加了一个特定的示例;如果您遇到问题,请编辑您的问题以包含显示修改方法的[mcve]。 – trashgod

+0

感谢编辑回答:)但链接之一是打破了你提供的2。 – JAVA