gpt4 book ai didi

java - 在 JPanel 上显示 JFreeChart 的缩略图

转载 作者:行者123 更新时间:2023-11-30 05:52:12 24 4
gpt4 key购买 nike

我目前正在处理时间序列数据,并且正在使用 JFreeCharts XYLineChart 来显示我的数据。对于我的用户界面,我想为这些图表创建可点击的缩略图(然后显示真正的大图表)。

我试过这种方法来创建图表的缩略图,但我不知道如何使用这个 BufferedImage 来显示缩略图。

XYSeriesCollection coll = new XYSeriesCollection();
coll.addSeries(rw.getT1().getCurMktCapSeries());
coll.addSeries(rw.getT2().getCurMktCapSeries());
JFreeChart chart = ChartFactory.createXYLineChart(rw.getT1().getName() + " - " + rw.getT2().getName(),
"Position",
"Course",
coll,
PlotOrientation.VERTICAL,
true,
true,
false);

BufferedImage bi = chart.createBufferedImage(1000, 1000, 100, 100, null);

我尝试在网上搜索,但我唯一找到的是上面创建缩略图的方法,而不是如何显示它。

所以我的问题是:

  • 这是创建缩略图的正确方法吗?
  • 如何在我的 GUI 上显示该缩略图?

解决方案

我刚刚创建了自己的自定义 JPanel

public class ImagePanel extends JPanel

然后我添加了下面的paintComponent方法来绘制缩略图

protected void paintComponent(Graphics g) {
super.paintComponents(g);
//Create Image
BufferedImage bi = this.createBufferedImage(this.rw);
//Draw Background
Graphics2D g2d = (Graphics2D)g;
g2d.setColor(this.backgroundColor);
g2d.fillRect(0, 0, this.getWidth(), this.getHeight());
//Draw Image
g2d.drawImage(bi.getScaledInstance(this.getWidth()-10, this.getHeight()-10, 0), 5, 5, this.backgroundColor, null);
}

为了创建 BufferedImage,我使用了以下方法

private BufferedImage createBufferedImage(ResultWrapper rw2) {
//Create JFreeChart
XYSeriesCollection coll = new XYSeriesCollection();
coll.addSeries(rw.getT1().getCurMktCapSeries());
coll.addSeries(rw.getT2().getCurMktCapSeries());
JFreeChart chart = ChartFactory.createXYLineChart(null, null, null, coll, PlotOrientation.VERTICAL, false, true, false);

//Hide Axis
XYPlot plot = chart.getXYPlot();
plot.getRangeAxis().setVisible(false);
plot.getDomainAxis().setVisible(false);

return chart.createBufferedImage(500, 500, 100, 100, null);
}

有了它,我得到了我想要的东西,JFreeChart 的小缩略图。要使其可点击,只需添加一个 MouseListener。

感谢@MadProgrammer 使用自定义组件和 paintComponent 方法

最佳答案

在 AndrewThompon 的建议之上,您可以提供一个能够绘制图表的自定义组件。

看看

这比已经建议的要复杂得多,但确实为您提供了最大的灵 active

关于java - 在 JPanel 上显示 JFreeChart 的缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11885805/

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