From: <fra...@ag...> - 2003-04-15 15:20:58
|
Hi, I have only downloaded jCharts today, so my experience with package is not great. I really want to use the package to embed charting components in Swing applications. Within the distribution I found an example of a Swing PieChart. I tried to follow that example to try and reconstruct my own Swing bar chart based on the distributions bar chart example. The code is given below. All seems to work, the frame gets drawn but finally I get an exception when the "axisChart.render()" method is called: $ source runharness /cygdrive/d/mpowerdem/src/wdiscovery java.lang.NullPointerException at org.jCharts.Chart.render(Unknown Source) at com.agilent.wdiscovery.MainFrame.initComponents(MainFrame.java:81) at com.agilent.wdiscovery.MainFrame.<init>(MainFrame.java:34) at com.agilent.wdiscovery.LaunchWirelessApp.<init>(LaunchWirelessApp.jav a:20) at com.agilent.wdiscovery.LaunchWirelessApp.main(LaunchWirelessApp.java: 49) I have tried other things in despair but I'm not getting very far. Can anyone help or point me to some other Swing based examples? Thanks, Francisco -------------------------------------------------------------------------------------------------------------------------------------- package com.agilent.wdiscovery; import org.jCharts.chartData.ChartDataException; import org.jCharts.properties.*; import org.jCharts.chartData.*; import org.jCharts.axisChart.*; import org.jCharts.types.*; import org.jCharts.imageMap.*; import java.awt.*; import java.awt.event.*; import java.awt.image.*; import javax.swing.*; /** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: </p> * @author unascribed * @version 1.0 */ public class MainFrame extends JFrame { private JPanel contentPane; private BorderLayout borderLayout1 = new BorderLayout(); private JPanel jPanel1 = new JPanel(true); //Construct the frame public MainFrame() { enableEvents(AWTEvent.WINDOW_EVENT_MASK); try { jbInit(); initComponents(); } catch(Exception e) { e.printStackTrace(); } } //Component initialization private void jbInit() throws Exception { //setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Your Icon]"))); contentPane = (JPanel) this.getContentPane(); contentPane.setLayout(borderLayout1); this.setSize(new Dimension(400, 300)); this.setTitle("802.11 Wireless Discovery"); jPanel1.setBorder(BorderFactory.createEtchedBorder()); contentPane.add(jPanel1, BorderLayout.CENTER); } //Overridden so we can exit when window is closed protected void processWindowEvent(WindowEvent e) { super.processWindowEvent(e); if (e.getID() == WindowEvent.WINDOW_CLOSING) { System.exit(0); } } private void initComponents() throws ChartDataException, PropertyException { String[] xAxisLabels= { "1998", "1999", "2000", "2001", "2002", "2003", "2004" }; String xAxisTitle= "Years"; String yAxisTitle= "Problems"; String title= "Micro$oft at Work"; DataSeries dataSeries = new DataSeries( xAxisLabels, xAxisTitle, yAxisTitle, title ); double[][] data= new double[][]{ { 250, 45, -36, 66, 145, 80, 55 } }; String[] legendLabels= { "Bugs" }; Paint[] paints= new Paint[]{ Color.blue.darker() }; BarChartProperties barChartProperties= new BarChartProperties(); AxisChartDataSet axisChartDataSet= new AxisChartDataSet( data, legendLabels, paints, ChartType.BAR, barChartProperties ); dataSeries.addIAxisPlotDataSet( axisChartDataSet ); ChartProperties chartProperties= new ChartProperties(); //---to make this plot horizontally, pass true to the AxisProperties Constructor //AxisProperties axisProperties= new AxisProperties( true ); AxisProperties axisProperties= new AxisProperties(); LegendProperties legendProperties= new LegendProperties(); AxisChart axisChart= new AxisChart( dataSeries, chartProperties, axisProperties, legendProperties, 200, 200 ); axisChart.setGraphics2D( (Graphics2D) this.jPanel1.getGraphics() ); axisChart.render(); } } |