2011-12-20 1 views
1

JFreeChart, похоже, работает, за исключением всего текста. Он просто не появляется вообще, и я понятия не имею, почему. Я прикрепил изображение окна с круговым графиком, который я получил с учебного сайта. Как вы можете видеть, текст не отображается. (Извините мой Твиттер был очень длинным)Почему в JFreeChart нет текста?

Благодаря JFreeChart

Edit:

Вот код, который генерирует выше график:

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 из ... изображения? –

+0

Ну, я могу опубликовать код, но я получил его прямо с учебного сайта. – Hassan

+0

Этот сайт http://www.vogella.de/articles/EclipseJFreeChart/article.html – Hassan

ответ

3

У меня была такая же проблема с использованием Linux Mint 11, Eclipse и JFreeChart 1.0.14. Я обнаружил, что резервное копирование до 1.0.13 разрешило проблему.

+0

Это сделало трюк. Благодаря! – Hassan

+0

В итоге я сделал то же самое - понизился. Я нахожусь в Windows. Я также разместил что-то на форумах jfreechart, так как он, кажется, был сломан, так как был выпущен .14. – ssnyder

+2

Просто столкнулся с той же проблемой. Похоже, вы можете использовать jfreechart-1.0.14 jars и просто заменить jcommon-1.0.17 на jcommon-1.0.16. По крайней мере, это решает проблему для моих простых тестовых случаев. –

1

Прежде всего, как сказал Кевин Стембридж, проверьте свой JDK. Вы используете Ubuntu, то попробуйте эту команду в терминале:

sudo update-alternatives --config java 

Вы можете увидеть JDKs, установленные в вашей системе и JDK (выбирается слева с *) вы используете для этого проекта.

Если у вас есть Oracle JDK (из пакета java-6-sun) и OpenJDK (openjdk-6-jdk пакета), попробуйте выбрать Oracle JDK, потому что OpenJDK имеют некоторые графические отличия от Oracle JDK и, возможно, они являются причиной этого странного поведение на вашем JFreeChart. Выберите Oracle JDK, перекомпилируйте проект Java и посмотрите, не изменилось ли что-то в вашем JFreeChart.

Проверьте это Ubuntu Help page для получения более подробной информации о Java или прочтите this old question из SO, или this page, если вы хотите установить последнюю версию Oracle JDK.

О коде, это очень похоже на учебник, как вы сказали. Я проверил код на 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);*/ 
    } 

Тогда мой совет пересмотреть весь код, используемый для графического интерфейса я видел в вашем скриншоте, и вы должны решить эту проблему.

Прокомментировать этот ответ, если у вас есть вопросы или проблемы.

+0

Спасибо за отличный ответ. Я пытался кое-что из того, что вы предложили, так как вы ответили. Я дам вам знать ... – Hassan

+0

@ Хасан Добро пожаловать. Надеюсь, вы решите проблему :-) –

Смежные вопросы