为什么JFreeChart中没有文字?

JFreeChart似乎正在工作,除了所有文本。 它根本没有出现,我不知道为什么。 我附上了一张带有饼图的窗口图片,这是我从教程网站获得的。 如您所见,文本不可见。 (对不起,我的推文很长)

谢谢 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() { } } 

正如您所看到的,它与教程中的几乎完全相同。

我使用Linux Mint 11,Eclipse和JFreeChart 1.0.14时遇到了同样的问题。 我发现备份到1.0.13解决了这个问题。

首先,像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中的某些内容是否已更改。

有关Java的详细信息,请查看此Ubuntu帮助页面 ,或者阅读此 SO的旧问题 ,或者如果要安装最新的Oracle JDK,请阅读此页面 。

关于代码,它与教程非常相似,就像你说的那样。 我已经使用Eclipse和Oracle JDK 6在Ubuntu上测试了您的代码。结果如下:

截图

将图表添加到面板,仅编辑createContents方法(并注释ChartComposite部件,因为我不知道什么是ChartComposite ),使用以下代码:

 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的所有代码,您应该解决问题。

如果您有任何疑问或问题,请评论此答案。