gpt4 book ai didi

java - 有没有人在JFreeChart中做过跟随鼠标的十字准线?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:19:38 26 4
gpt4 key购买 nike

我们正在使用 JFreeChart 来制作 XY 图,我们有一个功能请求来制作一个与鼠标一起移动的十字准线,并突出显示最接近鼠标 x 值的数据点。您可以在 Google 财经看到类似的例子 - http://www.google.com/finance?q=INDEXDJX:.DJI,INDEXSP:.INX,INDEXNASDAQ:.IXIC .

那些 Google 图表仅突出显示当前值(我们想要这样做并显示十字准线),但它们显示了我们正在寻找的实时鼠标交互。

有人有什么优雅的建议吗?

谢谢。

最佳答案

我使用鼠标监听器和 CrosshairOverlay 类使它正常工作。假期旅行回来后,我会发布我的代码。结果并不太难。


对不起,我忘了这个!

首先,您要计算十字线所在位置的 x、y 值。对我来说,我希望它沿着我们直线上的点移动,所以我计算了最接近的 x 值并将该数据对用于 x、y。

然后我调用这个方法:

protected void setCrosshairLocation(double x, Double y) {
Crosshair domainCrosshair;
List domainCrosshairs = crosshairOverlay.getDomainCrosshairs();
if (domainCrosshairs.isEmpty()) {
domainCrosshair = new Crosshair();
domainCrosshair.setPaint(BlueStripeColors.LIGHT_GRAY_C0);
crosshairOverlay.addDomainCrosshair(domainCrosshair);
}
else {
// We only have one at a time
domainCrosshair = (Crosshair) domainCrosshairs.get(0);
}
domainCrosshair.setValue(x);

if (y != null) {
Crosshair rangeCrosshair;
List rangeCrosshairs = crosshairOverlay.getRangeCrosshairs();
if (rangeCrosshairs.isEmpty()) {
rangeCrosshair = new Crosshair();
rangeCrosshair.setPaint(BlueStripeColors.LIGHT_GRAY_C0);
crosshairOverlay.addRangeCrosshair(rangeCrosshair);
}
else {
// We only have one at a time
rangeCrosshair = (Crosshair) rangeCrosshairs.get(0);
}

rangeCrosshair.setValue(y);
}
}

请注意,crosshairOverlay 是 CrosshairOverlay 的一个实例。

关于java - 有没有人在JFreeChart中做过跟随鼠标的十字准线?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1902422/

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