【问题标题】:Translating points from Jfreechart component to screen values将 Jfreechart 组件中的点转换为屏幕值
【发布时间】:2016-01-24 03:45:09
【问题描述】:

我在尝试将点从 JFreeChart 转换到屏幕以使 Robot.mouseMove() 方法正常工作时遇到问题。

正如本主题 JFreeChart: how to get coordinates of an XYItemEntity? 中所建议的那样,我编写了一个自定义 CandlestickRenderer,用于存储某些绘制的点。然后我将此自定义渲染设置为我的图表的渲染器:

chart= ChartFactory.createCandlestickChart("Default Chart", "Time", "Value", ohlcSeriesCollection, true);
chart.getXYPlot().setOrientation(PlotOrientation.VERTICAL);
chart.getXYPlot().setDomainPannable(true);
chart.getXYPlot().setRangePannable(true);
chart.getXYPlot().getRangeAxis().setAutoRange(true);
String emptyTitle= "";
chart.setTitle(emptyTitle);
XYPlot plot = (XYPlot) chart.getPlot();
DateAxis axis = (DateAxis) plot.getDomainAxis();
axis.setDateFormatOverride(new SimpleDateFormat(DOMAIN_DATE_FORMAT));
XYItemRenderer renderer=new CandleRenderer(); // my custom CandlestickRenderer 
plot.setRenderer(renderer);

然后,我将创建的图表传递给我的自定义 ChartPanel,并将 ChatMouseListener 添加到 CharPanel:

chartPanel=new CandlestickChartPanel(chart, analysis);
chartPanel.setDisplayToolTips(false);
tooltipPanel=new TooltipPanel();
add(chartPanel, BorderLayout.CENTER);
add(tooltipPanel, BorderLayout.EAST);
chartPanel.addChartMouseListener(new MyChartMouseListener());

现在,在 MyChartMouseListener 中,我希望能够将以前由我的自定义 CandlestickRenderer 存储的点与鼠标当前指向的点进行比较。为了实现这一点,我使用了 MouseEvent 的屏幕坐标:

Point point = new Point(chartMouseEvent.getTrigger().getXOnScreen(),chartMouseEvent.getTrigger().getYOnScreen());

但是我在正确翻译从自定义 CandlestickRenderer 获得的点时遇到了很大的问题。我正在使用以下代码进行翻译:

SwingUtilities.convertPointToScreen(point, this.chartPanel);

但是我得到的值与我单击这些点并将坐标打印到控制台时不同。简化: 1. 我使用自定义 CandlestickRenderer 绘制了一根蜡烛。 2. 我使用 SwingUtilities.convertPointToScreen() 方法将该蜡烛的某些点转换到屏幕上。 3. 然后我点击屏幕上的那些点并打印它们的屏幕值,但坐标与保存的坐标非常不同。

任何帮助将不胜感激:)

【问题讨论】:

    标签: java swing jfreechart


    【解决方案1】:

    好的,所以对于任何感兴趣的人来说,显然 Point translated=chartPanel.translateJava2DToScreen(point) 而不是使用 SwingUtilities 来完成这项工作:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 1970-01-01
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 2013-05-04
      相关资源
      最近更新 更多