JFreeChart 交互式图表编辑处理 ChartMouseEvent

发布于 2024-12-01 12:02:17 字数 571 浏览 2 评论 0原文

我试图拦截 ChartMouseEvent 以便修改使用 ChartFactory.createXYLineChart 方法创建的 JFreeChart 对象的 XYSeries(并使用 JDialog 显示)。

XYLineChart

我通过这种方式成功检索鼠标事件的坐标:

public void chartMouseMoved(ChartMouseEvent arg0) {
    int x = arg0.getTrigger().getX();
        int y = arg0.getTrigger().getY();

坐标系的原点 (0,0) 位于就在图中的红色方块处。 现在,我想计算鼠标所在的间隔。为了做到这一点,我需要:

  1. 灰色图表的左上角坐标(绿色方块)
  2. 灰色图表的高度和宽度

如何获得这些值?

注:我是 JFreeChart 新手。如果我做错了,并且有更好的方法来实现这些目标,请引导我走向正确的方向。

I'm trying to intercept ChartMouseEvent in order to modify an XYSeries of a JFreeChart object created with ChartFactory.createXYLineChart method (and displayed using a JDialog).

XYLineChart

I retrieve successfully the coordinate of the mouse event this way:

public void chartMouseMoved(ChartMouseEvent arg0) {
    int x = arg0.getTrigger().getX();
        int y = arg0.getTrigger().getY();

The origin of the coordinate system (0,0) is located at the red square in the picture.
Now, I would like to calculate in which interval is the mouse in. In order to do this I need:

  1. the top-left coordinate of the grey chart (green square)
  2. height and width of the grey chart

How can I get this values?

A note: I'm a JFreeChart newbie. If I'm doing this wrong, and there is a better way to do achive these goals, please put me in the right direction.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蒲公英的约定 2024-12-08 12:02:17

您是否通过 ChartPanel 渲染绘图?

如果是这样,请查看 ChartPanel.getChartRenderingInfo().getPlotInfo().getDataArea()。这应该返回一个易于使用的 Rectangle2D 。

Are you rendering the plot via ChartPanel?

If so, take a look at ChartPanel.getChartRenderingInfo().getPlotInfo().getDataArea(). This should return a Rectangle2D that is easy to work with.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文