Charts 基于滑块的当前值在JFreeChart中渲染单个点
我还没有像我希望的那样深入Java,因此我发现我当前的任务相当具有挑战性:Charts 基于滑块的当前值在JFreeChart中渲染单个点,charts,jfreechart,itemrenderer,jslider,changelistener,Charts,Jfreechart,Itemrenderer,Jslider,Changelistener,我还没有像我希望的那样深入Java,因此我发现我当前的任务相当具有挑战性: 显示在另一个类中收集的数据的图表 一种滑块,其结束值由图表中使用的数据集中的最后一项确定 playbutton当前除了让滑块以5步为一步,直到再次暂停为止,什么都不做 我现在的问题是:我应该根据滑块当前显示的值在图表中一次突出显示一个项目 老实说。。。我还不习惯渲染器 如果我理解正确,我需要使用 renderer.drawItem(java.awt.Graphics2D g2, XYItemRe
- 显示在另一个类中收集的数据的图表
- 一种滑块,其结束值由图表中使用的数据集中的最后一项确定
- playbutton当前除了让滑块以5步为一步,直到再次暂停为止,什么都不做
renderer.drawItem(java.awt.Graphics2D g2,
XYItemRendererState state,
java.awt.geom.Rectangle2D dataArea,
PlotRenderingInfo info,
XYPlot plot,
ValueAxis domainAxis,
ValueAxis rangeAxis,
XYDataset dataset,
int series,
int item,
CrosshairState crosshairState,
int pass)
但是我对这个方法及其参数完全没有经验,也不知道如何初始化它们
我是说。。。我从图表中得到了一个绘图、一个数据集和2个系列,我还建议“item”是系列中要突出显示的项目的索引,我可以从滑块值转换
不幸的是,困扰谷歌的这件事让我相当沮丧,因为我得到的只是我在50多个不同页面上发布的代码(后来我放弃了)
我想知道。。。首先,如果我打算使用正确的方法,并且,尽管我很惭愧地这样问。。。如何使用它
嗯。。。期待一些答案和。。。提前谢谢。好吧,我现在用一种不同于预期的方式解决了我的问题,但结果对我来说很好 我没有高亮显示曲线中的一个点,而是简单地添加一个Domainmarker,它将根据滑块当前显示的值进行调整 1类测试滑块
private HashSet<SliderListener> sliderListenerSet = new HashSet<SliderListener>();
public void addSliderListener(SliderListener Listener){
sliderListenerSet.add(Listener);
}
slider.addChangeListener(this);
public void stateChanged(ChangeEvent e) {
// TODO Auto-generated method stub
JSlider source = (JSlider)e.getSource();
if (!source.getValueIsAdjusting()) {
fireSliderChanged();
}
}
public void fireSliderChanged(){
for (SliderListener currentListener : sliderListenerSet)
currentListener.sliderValueChanged();
}
类别3图表
Marker marker = new ValueMarker(0);
plot.addDomainMarker(marker); //so that it would be there at the beginning
TestSlider ts = new TestSlider();
ts.addSliderListener(new SliderListener(){
@Override
public void sliderValueChanged() {
plot.removeDomainMarker(marker); //I only want one of them at a time - the one with the value the slider is currently showing so remove the old one...
marker = new ValueMarker(ts.slider.getValue());
plot.addDomainMarker(marker); // ... and add the one with the new value
}
});
}
我尽可能地使它简短和通用,我希望我没有删掉任何重要的内容。
嗯,我对这个网站还是新手,所以。。。如果我在某个地方犯了错误,请随时告诉我。查看这些
JSlider
和引用的十字线示例。请编辑您的问题,将重点放在您描述的问题上。这正是问题所在。。。我不知道在这一点上使用哪种方法,因此我只能发布没有它的代码,这一点都没有帮助。我首先需要知道drawItem(..)是否是解决我问题的正确方法-我可能完全被误导了,因为我以前从未做过任何类似的事情,可能值得一看。忘了更新它。我通过添加一个DomainMarker解决了这个问题,它将根据滑块当前显示的值进行调整。所以啊。。。我想我现在没事了。我对这里很陌生,但我想对于那些给出最好答案的人来说,有某种奖励功能。。。既然你是唯一一个真正尝试帮助我的人,即使我的问题有点复杂。。。“无组织的”,我不介意给你。所以,只要留下一个答案或什么,我会在下一次来的时候注意的。
Marker marker = new ValueMarker(0);
plot.addDomainMarker(marker); //so that it would be there at the beginning
TestSlider ts = new TestSlider();
ts.addSliderListener(new SliderListener(){
@Override
public void sliderValueChanged() {
plot.removeDomainMarker(marker); //I only want one of them at a time - the one with the value the slider is currently showing so remove the old one...
marker = new ValueMarker(ts.slider.getValue());
plot.addDomainMarker(marker); // ... and add the one with the new value
}
});
}