gpt4 book ai didi

java - 将 Jfreechart 组件中的点转换为屏幕值

转载 作者:行者123 更新时间:2023-11-30 10:50:43 24 4
gpt4 key购买 nike

我在尝试将点从 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. 然后我点击屏幕上的那些点并打印它们的屏幕值,但坐标与保存的坐标非常不同。

任何帮助将不胜感激:)

最佳答案

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

关于java - 将 Jfreechart 组件中的点转换为屏幕值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34967111/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com