2011-12-20 37 views
1

JFreeChart似乎工作,除了所有的文本。它根本沒有出現,我不知道爲什麼。我從教程網站獲取了一張餅圖的窗口圖片。正如你所看到的,文字是不可見的。 (對不起我的Twitter的飼料是很長的)爲什麼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() { 
    } 

} 

正如你所看到的,這幾乎是與教程中的一樣。

+2

我們將診斷您使用JFreeChart從...圖像? – 2011-12-20 15:25:35

+0

嗯,我可以發佈代碼,但是我從教程網站上找到了它。 – Hassan 2011-12-20 15:26:45

+0

本網站http://www.vogella.de/articles/EclipseJFreeChart/article.html – Hassan 2011-12-20 15:27:32

回答

3

我在使用Linux Mint 11,Eclipse和JFreeChart 1.0.14時遇到了同樣的問題。我發現備份到1.0.13解決了這個問題。

+0

這樣做的伎倆。謝謝! – Hassan 2011-12-29 18:50:41

+0

我最終做了同樣的事情 - 降級....我在Windows上。我也在jfreechart論壇上發佈了一些東西,因爲它自0.14發佈以來似乎已經被破壞了。 – ssnyder 2012-01-24 15:57:47

+2

剛剛遇到同樣的問題。看起來你可以使用jfreechart-1.0.14 jar,並簡單地用jcommon-1.0.16替換jcommon-1.0.17。至少可以解決我的簡單測試用例的問題。 – 2012-04-21 18:31:17

1

首先,像Kevin Stembridge說的那樣,檢查你的JDK。您正在使用的Ubuntu,然後在終端試試這個命令:

sudo update-alternatives --config java 

你可以看到安裝在您的系統和JDK上的JDK(選擇在與*左),你正在使用的這個項目。

如果你有甲骨文JDK(從包裝java-6-sun)和OpenJDK的(在openjdk-6-jdk包),儘量選擇Oracle JDK,因爲在OpenJDK已經從Oracle JDK一些圖形化的差異,也許這些都是這個奇怪的原因行爲在你的JFreeChart上。選擇Oracle JDK,重新編譯Java項目,並查看JFreeChart中是否有更改。

如果您想安裝最新版本的Oracle JDK,請查看此Ubuntu Help page瞭解Java的詳細信息,或者閱讀SO的this old questionthis page

關於代碼,它與教程非常相似,就像你說的那樣。我已經測試了在Ubuntu代碼,使用Eclipse和Oracle JDK 6.結果是這樣的:

screenshot

添加圖表到面板中,編輯僅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所有的代碼,你應該解決的問題。

如果您有任何問題或疑問,請對此答案發表評論。

+0

感謝您的一個很好的答案。自從您回答以來,我一直在嘗試您建議的一些內容。我會讓你知道... – Hassan 2011-12-23 00:12:17

+0

@Hassan不客氣。我希望你能解決這個問題:-) – 2011-12-23 09:16:06