How to use JFreeChart with SWT (includes sample code)

A discussion forum for JFreeChart (a 2D chart library for the Java platform).

Post by Guest » Thu Jan 13, 2005 12:23 am

Thanks for posting this



Post by 黑松& » Wed Jan 19, 2005 9:50 am

:D 非常感谢!

Posts: 2
Joined: Thu Jan 20, 2005 3:33 am

Re: How to use JFreeChart with SWT (includes sample code)

Post by snowfat » Fri Jan 21, 2005 2:46 pm

Robert Gash wrote:

Code: Select all

/// STEP 1 ////////////////////////////////////////////////
// create a composite suitable for displaying all of our chart data
Composite chartComposite = new Composite(/* options */);
chartComposite.setLayoutData(/* set the layout options */);

/// STEP 2 ////////////////////////////////////////////////
// create the dataset for the pie chart of the distribution
DefaultPieDataset pieData = new DefaultPieDataset();
/* populate the pieData here */

JFreeChart chart = ChartFactory.createPie3DChart(/* some options */);
// OPTIONAL: tinkering with plot options here

/// STEP 3 ////////////////////////////////////////////////
// Grab the background color from the SWT Composite
// so our AWT panel "matches" the SWT Composite
Color backgroundColor = chartComposite.getBackground();

// create the panel
Panel chartPanel = SWT_AWT.new_Panel(chartComposite);

// set the panel's background (defaults to pure white)
chartPanel.setBackground(new java.awt.Color(backgroundColor.getRed(),
// set the AWT layout manager
chartPanel.setLayout(/* some AWT/Swing layout manager like BoxLayout */);

/// STEP 4 ////////////////////////////////////////////////        
ChartPanel jfreeChartPanel = new ChartPanel(chart);
-Robert Gash, Software Developer, Enkia Corporation
gashalot <at>
thanks ,use these code ,i can draw chart in swt window when click a buttion,but when i draw new chart the second time,the chart not changed ,what should i do to refresh panel or frame?
i have search the forum ,it seems that chartpanel.setRefreshBuffer(true) could do; but in fact it is no effect.

Posts: 2
Joined: Wed Apr 19, 2006 6:51 pm

Post by kelsey » Wed Apr 19, 2006 6:57 pm

This is a nice solution, thanks for posting the code, Til.

However, I am still searching for a way to get JFreeChart to have full functionality in my Eclipse RCP application. Has anyone done this?

I was thinking of rebuilding JFreeChart after replacing Swing and AWT imports with the corresponding SwingWT imports. Has anyone tried this or is this not a reasonable thing to do?

JFreeReport Project Leader
Posts: 698
Joined: Fri Mar 14, 2003 3:34 pm

Post by Taqua » Wed Apr 19, 2006 7:20 pm


I would doubt that this is reasonable at all (or even needed).

The major part of JFreeChart deals with getting the chart stuff into a Graphics2D object. As long as you can display Graphics2D content in SWT, you dont have to touch that code at all. (And it should be possible at least by using a BufferedImage or by converting the image into a PNG and then displaying that image. As I'm not a SWT user for religious reasons (100% pure Java :)), I cant tell you how this could be done.)

The stuff you might have to convert is the whole Swing layer working with the ChartPanel.

As a fast solution, the SwingSWT project jumps in mind, which should provide a Swing-Implementation that uses the SWT as backend.

If that does not work, you have to go the dirty way of reimplementing that GUI stuff (namely the property dialogs, the context menus etc.). It shouldn't be hard, just time consuming.

As SWT is not Swing, you will have to change the underlying implementation, as SWT violates the Java way of letting the Garbage Collector deal with clean ups. So you have to implement some sort of resource management, or things will become a mess.


Posts: 11
Joined: Fri Sep 29, 2006 11:21 am

Using JFreechart in Eclipse RCP application

Post by Scarlett » Fri Sep 29, 2006 12:10 pm

Hi All,

I am trying to use JFreeChart in my eclipse RCP application.

the source code is as follows: -

* Created on Sep 28, 2006
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates

* TODO To change the template for this generated type comment go to
* Window - Preferences - Java - Code Style - Code Templates

/* -------------------
* -------------------
* (C) Copyright 2002-2005, by Object Refinery Limited.

package edu.wustl.lims.ui.pAssayView.samplesAssPrepView;
import java.awt.Color;
import java.awt.Font;

import javax.swing.JPanel;

import org.eclipse.jface.dialogs.TitleAreaDialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.awt.SWT_AWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.ChartPanel;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.NumberAxis;
import org.jfree.chart.plot.CategoryPlot;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.chart.title.TextTitle;
import org.jfree.ui.HorizontalAlignment;
import org.jfree.ui.RectangleEdge;
* A simple demonstration application showing how to create a line chart using
* data from a {@link CategoryDataset}.
public class LineChartDemo1 extends TitleAreaDialog {

CategoryDataset dataset = null;
JFreeChart chart = null;

* Creates a new demo.
* @param title the frame title.
public LineChartDemo1(Shell parent) {
//dataset = createDataset();
//chart = createChart(dataset);
// ChartPanel chartPanel = new ChartPanel(chart);
// chartPanel.setPreferredSize(new Dimension(500, 270));

protected Control createDialogArea(Composite parent)

Display display = new Display();
Shell shell = new Shell(display);

Composite chartComposite = new Composite(shell, SWT.EMBEDDED);
CategoryDataset dataset = createDataset();
JFreeChart chart = createChart(dataset);

//Creating a frame
java.awt.Frame frame = SWT_AWT.new_Frame(chartComposite);
javax.swing.JPanel panel = new javax.swing.JPanel( );

// //Creating a Chart Panel
ChartPanel chartPanel = new ChartPanel(chart);
// chartPanel.setPreferredSize(new Dimension(500, 270));
// //Adding a Chart Panel to a frame

return parent;

* Creates a sample dataset.
* @return The dataset.

private static CategoryDataset createDataset() {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
dataset.addValue(212, "Classes", "JDK 1.0");
dataset.addValue(504, "Classes", "JDK 1.1");
dataset.addValue(1520, "Classes", "SDK 1.2");
dataset.addValue(1842, "Classes", "SDK 1.3");
dataset.addValue(2991, "Classes", "SDK 1.4");
return dataset;

* Creates a sample chart.
* @param dataset a dataset.
* @return The chart.

private static JFreeChart createChart(CategoryDataset dataset) {
String arg0 ="Java Standard Class Library";
String arg1 = "Release";
String arg2 = "Class Count";

//create the chart...
JFreeChart chart = ChartFactory.createLineChart(
arg0, // chart title
arg1, // domain axis label
arg2, // range axis label
dataset, // data
PlotOrientation.VERTICAL, // orientation
false, // include legend
true, // tooltips
false // urls
chart.addSubtitle(new TextTitle("Number of Classes By Release"));
TextTitle source = new TextTitle(
"Source: Java In A Nutshell (4th Edition) "
+ "by David Flanagan (O’Reilly)"
source.setFont(new Font("SansSerif", Font.PLAIN, 10));
CategoryPlot plot = (CategoryPlot) chart.getPlot();
// customise the range axis...
NumberAxis rangeAxis = (NumberAxis) plot.getRangeAxis();
// customise the renderer...
LineAndShapeRenderer renderer
= (LineAndShapeRenderer) plot.getRenderer();
return chart;


When I try to invoeke this dialog box I get the following error
Unhandled event loop exception

Does anyone has any idea why this is happening ?

Ricardo V Gomes
Posts: 3
Joined: Wed Apr 04, 2007 2:15 pm

Post by Ricardo V Gomes » Fri Apr 06, 2007 6:01 pm

Robert Gash wrote:
Jon wrote: swt Composite, and is constructed using a WEmbeddedFrame from Sun's
internal package Sun has changed this internal code
in jdk 1.4, and so this undocumented Eclipse mechanism does not work
with that version.

Any on e have any suggestions on how I can get graphs to display inside my SWT application?

I actually just tested a new demo using SWT 3.0M8, J2SDK 1.4.2_03, and JFreeChart 0.9.17 on my Windows XP system (SP1). I was able to use JFreeChart without any problems.

The sample code can be found at

Let me know if you have any questions.


I tried to use the sample code you provided, but eclipse gives me errors on the imports.
I didnt add "org.eclipse.swt" , but I'm sure I added "org.jfree.chart" to the eclipse plugin folder. But both give me errors.

1- Where can I get all those imports?
2- How do I set them up?


Posts: 3
Joined: Thu Sep 13, 2007 11:28 am

Post by sutcha » Fri Sep 21, 2007 11:00 am


I just used Tils way to get a SWT-Image, but I got a bad performance. I use a modified plot of JFreeChart and when the range of values is over 100000 it takes a few seconds (1-2 ;) ) to buffer the chart. I used the way creating a PNG and using the bytearray etc. It seems to be a problem to buffer a chart with high values. Do you have any idea?

Posts: 1
Joined: Thu Jul 16, 2009 8:26 am

Re: How to use JFreeChart with SWT (includes sample code)

Post by micky » Thu Jul 16, 2009 8:31 am

Hello all,

i think i'm getting same two errors as you are Ricardo. If you solved or then you will solve this matter, please share your information, i am really in need of it. Waiting your answer.

Thanks, micky Simulation pret

Posts: 1
Joined: Mon Dec 27, 2010 11:36 am
antibot: No, of course not.

Re: How to use JFreeChart with SWT (includes sample code)

Post by tar » Mon Dec 27, 2010 11:40 am

I have attempted the above method in linux under Eclipse and everything working!

Posts: 1
Joined: Tue Apr 26, 2011 9:50 pm
antibot: No, of course not.

Re: &#21150;&#27861;&#24456;&#22909;&#65281;

Post by andrewza » Tue Apr 26, 2011 9:51 pm

&#40657;&#26494;& wrote: :D 非常感谢!
Could not understand )
Last edited by andrewza on Sun Mar 04, 2018 10:34 am, edited 7 times in total.

Posts: 3
Joined: Tue Jan 03, 2012 12:39 pm
antibot: No, of course not.

Re: How to use JFreeChart with SWT (includes sample code)

Post by inder.chaurasiya » Mon Feb 13, 2012 1:24 pm

Hi Guys,

I don't want to mix swt and awt for creating graph.

Will you please suggest me any other alternate solution so that i can achieve the graph creation only using swt.


Posts: 8
Joined: Thu Feb 07, 2019 5:49 pm
antibot: No, of course not.

Re: How to use JFreeChart with SWT (includes sample code)

Post by canerandagio » Mon Feb 11, 2019 4:57 pm

Hi!There isn't a method new_panel for SWT_AWT. I'm using org.eclipse.swt.gtk.linixx86_64_3.108etc...

Post Reply