JFreeChart似乎正在运作,除了所有文本。它根本没有出现,我不知道为什么。我附上了一张带有饼图的窗口图片,这是我从教程网站获得的。如您所见,文本不可见。 (对不起,我的推文很长)
感谢
编辑:
以下是生成上图的代码:
package analyzer_main;
import java.awt.Font;
public class FloatChart extends Composite implements Screen {
JFreeChart floatChart;
public FloatChart(Composite parent, int style){
super(parent,style);
createContents();
}
private void createContents(){
this.setLayout(new FormLayout());
floatChart = createChart(createDataset());
ChartComposite chartComposite = new ChartComposite(this,SWT.NONE,floatChart, true);
FormData fd_chartComposite = new FormData();
fd_chartComposite.left = new FormAttachment(0);
fd_chartComposite.right = new FormAttachment(100,0);
fd_chartComposite.top = new FormAttachment(0);
fd_chartComposite.bottom= new FormAttachment(100,0);
chartComposite.setLayoutData(fd_chartComposite);
}
/** * Creates the Dataset for the Pie chart */
private PieDataset createDataset() {
DefaultPieDataset dataset = new DefaultPieDataset();
dataset.setValue("One", new Double(43.2));
dataset.setValue("Two", new Double(10.0));
dataset.setValue("Three", new Double(27.5));
dataset.setValue("Four", new Double(17.5));
dataset.setValue("Five", new Double(11.0));
dataset.setValue("Six", new Double(19.4));
return dataset;
}
private JFreeChart createChart(PieDataset dataset) {
JFreeChart chart = ChartFactory.createPieChart("Pie Chart Demo 1", // chart
// title
dataset, // data
true, // include legend
true, false);
PiePlot plot = (PiePlot) chart.getPlot();
plot.setSectionOutlinesVisible(false);
plot.setLabelFont(new Font("SansSerif", Font.PLAIN, 12));
plot.setNoDataMessage("No data available");
plot.setCircular(false);
plot.setLabelGap(0.02);
return chart;
}
@Override
public void Load() {
}
}
正如您所看到的,它与教程中的几乎相同。
答案 0 :(得分:3)
使用Linux Mint 11,Eclipse和JFreeChart 1.0.14时遇到了同样的问题。我发现备份到1.0.13解决了这个问题。
答案 1 :(得分:1)
首先,像Kevin Stembridge所说,检查你的JDK。您正在使用Ubuntu,然后在终端中尝试此命令:
sudo update-alternatives --config java
您可以看到系统上安装的JDK以及您用于此项目的JDK(在左侧选择了*
)。
如果你有Oracle JDK(来自包java-6-sun
)和OpenJDK(openjdk-6-jdk
包),请尝试选择Oracle JDK,因为OpenJDK与Oracle JDK有一些图形差异,也许这些是JFreeChart上出现这种奇怪行为的原因。选择Oracle JDK,重新编译Java项目,看看JFreeChart中是否有更改。
检查此Ubuntu Help page以获取有关Java的详细信息,或阅读SO的this old question,或this page如果要安装最新的Oracle JDK。
关于代码,它与教程非常相似,就像你说的那样。我已经使用Eclipse和Oracle JDK 6在Ubuntu上测试了您的代码。结果是:
将图表添加到面板,仅编辑createContents
方法(并评论ChartComposite
部分,因为我不知道ChartComposite
是什么),使用此代码:< / p>
private void createContents(){
//this.setLayout(new FormLayout());
floatChart = createChart(createDataset());
ChartPanel chartPanel = new ChartPanel(floatChart);
// default size
chartPanel.setPreferredSize(new java.awt.Dimension(500, 270));
// add it to our application
setContentPane(chartPanel);
/*ChartComposite chartComposite = new ChartComposite(this,SWT.NONE,floatChart, true);
FormData fd_chartComposite = new FormData();
fd_chartComposite.left = new FormAttachment(0);
fd_chartComposite.right = new FormAttachment(100,0);
fd_chartComposite.top = new FormAttachment(0);
fd_chartComposite.bottom= new FormAttachment(100,0);
chartComposite.setLayoutData(fd_chartComposite);*/
}
然后,我的建议是检查您在截图中看到的用于GUI的所有代码,您应该解决问题。
如果您有任何疑问或问题,请评论此答案。