如何使用JFree Chart包生成饼图标签的URL。我们可以扩展PieSectionLabelGenerator,但我需要举例说明如何。 请指教!
提前致谢!
答案 0 :(得分:1)
只需在setLabelGenerator()
上调用PiePlot
即可。 MessageFormat
ArgumentIndex 值对应系列名称,值和百分比。您可以在标签生成器中引用它们,如下所示:
PiePlot plot = (PiePlot) chart.getPlot();
plot.setLabelGenerator(new StandardPieSectionLabelGenerator("{0} {1} {2}"));
附录:
我正在寻找网址/超链接。
向ChartMouseListener
添加ChartPanel
;您可以从相应ChartEntity
的{{1}}获取链接。您可以使用ChartMouseEvent
在浏览器中打开网址。
答案 1 :(得分:0)
请注意,此答案适用于那些为网页中使用的图表制作网址和地图的人
使用HTML地图制作饼段自己的网址
我建议你实际扩展StandardPieURLGenerator
。那你只需要做两件事:
添加数据
通过构造函数参数或setter,设置一种方法将数据添加到类中的字段中。
覆盖generateURL
public String generateURL(PieDataset dataset, Comparable key, int pieIndex)
{
return super.generateURL(dataset, key, pieIndex) + "&" + yourParameters;
}
在标签中添加网址
扩展StandardPieSectionLabelGenerator
并覆盖generateAttributedSectionLabel
,而不是执行上述相同步骤。您的功能现在看起来更像是这样:
public String generateAttributedSectionLabel(PieDataset dataset, Comparable key)
{
return super.generateAttributedSectionLabel(dataset, key) + "<a href="YOUR_URL_HERE" />";
}
答案 2 :(得分:0)
static class CustomLegendGenerator
implements PieSectionLabelGenerator {
public String generateSectionLabel(final PieDataset dataset, final Comparable key) {
String temp = null;
if (dataset != null) {
temp = key.toString();
if (key.toString().equalsIgnoreCase("abc")) {
temp = temp + " (abc String)";
}
if (key.toString().equalsIgnoreCase("xyz")) {
temp = temp + " (xyz description)";
}
if (key.toString().equalsIgnoreCase("klm")) {
temp = temp + " (Klm description)";
}
}
return temp;
}
public AttributedString generateAttributedSectionLabel(PieDataset pd, Comparable cmprbl) {
throw new UnsupportedOperationException("Not supported yet.");
}
}