Here is a Java applet that allows the user to enter as many numbers as desired and then displays the numbers in either bar-chart or line-chart form (the user’s values are the heights of the bars or the y-points on the graph). it also allows the user to switch between line and bar graph styles.
You need to download the JFree Chart class libraries first:
http://sourceforge.net/project/showfiles.php?group_id=15494&package_id=12428
You can make use of the following class libraries as well from mindviewinc.com:
http://www.mindviewinc.com/TIJ4/CodeInstructions.html
So here is the complete code:
import org.jfree.chart.*;
import org.jfree.data.category.*;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.xy.*;
import org.jfree.data.*;
import org.jfree.chart.renderer.category.*;
import org.jfree.chart.plot.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import net.mindview.util.*;
import java.awt.BorderLayout;
import java.awt.Container;
import javax.swing.Box;
import javax.swing.JApplet;
import javax.swing.JButton;
import javax.swing.JFrame;
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
import java.util.Scanner;
import java.util.Locale;
import javax.swing.JOptionPane;
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.Dimension;
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.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.ui.ApplicationFrame;
import org.jfree.ui.RefineryUtilities;
import static net.mindview.util.SwingConsole.*;
public class MyChart extends JApplet {
private JButton
b = new JButton("View Bar-Chart"),
l = new JButton("View Line-Chart");
private JLabel lbl_Input = new JLabel("Enter Some Numbers(Seperated by a comma) ");
private JTextField txt_Input = new JTextField(3);
public void init()
{
lbl_Input.setLabelFor(txt_Input);
JPanel TopPane = new JPanel(new GridLayout(0,1));
TopPane.add(lbl_Input);
TopPane.add(txt_Input);
JPanel MiddlePane = new JPanel(new GridLayout(0,1));
JPanel BottomPane = new JPanel();
BottomPane.add(b);
BottomPane.add(l);
b.setSize(50, 50);
l.setSize(50, 50);
JPanel contentPane = new JPanel();
contentPane.setBorder(BorderFactory.createEmptyBorder(20, 20, 20, 20));
contentPane.setLayout(new BorderLayout());
contentPane.add(TopPane, BorderLayout.NORTH);
contentPane.add(MiddlePane, BorderLayout.CENTER);
contentPane.add(BottomPane, BorderLayout.SOUTH);
setContentPane(contentPane);
add(TopPane, BorderLayout.NORTH);
add(MiddlePane, BorderLayout.CENTER);
add(BottomPane, BorderLayout.SOUTH);
}
public MyChart()
{
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String input = "";
input = txt_Input.getText();
int counter = 0;
Scanner scanner = new Scanner(input);
scanner.useDelimiter(",");
while(scanner.hasNextInt())
{
counter ++;
scanner.nextInt();
}
int[] numbers = new int[counter];
Scanner tempscanner = new Scanner(input);
tempscanner.useDelimiter(",");
while(tempscanner.hasNextInt())
{
for(int i = 0 ; i < counter; i++)
numbers[i] = tempscanner.nextInt();
}
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for(int i = 0 ; i < counter ; i++)
dataset.setValue(numbers[i], "Numbers", "" + numbers[i] );
JFreeChart chart = ChartFactory.createBarChart
("Bar Chart ","", "", dataset, PlotOrientation.VERTICAL, false,true, false);
chart.setBackgroundPaint(Color.gray);
chart.getTitle().setPaint(Color.white);
CategoryPlot p = chart.getCategoryPlot();
p.setRangeGridlinePaint(Color.black);
ChartFrame Chart_Frame=new ChartFrame("Bar Chart",chart);
Chart_Frame.setVisible(true);
Chart_Frame.setSize(400,350);
}
});
l.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
String input = "";
input = txt_Input.getText();
int counter = 0;
Scanner scanner = new Scanner(input);
scanner.useDelimiter(",");
while(scanner.hasNextInt())
{
counter ++;
scanner.nextInt();
}
int[] numbers = new int[counter];
Scanner tempscanner = new Scanner(input);
tempscanner.useDelimiter(",");
while(tempscanner.hasNextInt())
{
for(int i = 0 ; i < counter; i++)
numbers[i] = tempscanner.nextInt();
}
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for(int i = 0 ; i < counter ; i++)
dataset.setValue(numbers[i], "Numbers", "" + numbers[i] );
JFreeChart chart = ChartFactory.createLineChart
("Line Chart","", "", dataset, PlotOrientation.VERTICAL, false, true, false );
chart.setBackgroundPaint(Color.white);
final CategoryPlot plot = (CategoryPlot) chart.getPlot();
plot.setBackgroundPaint(Color.lightGray);
plot.setRangeGridlinePaint(Color.black);
ChartFrame Chart_Frame=new ChartFrame("Line Chart",chart);
Chart_Frame.setVisible(true);
Chart_Frame.setSize(400,350);
}
});
}
public static void main(String[] args) {
run(new MyChart(), 400, 200);
}
public static void run(JApplet applet, int width, int height) {
JFrame frame = new JFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().add(applet);
frame.setSize(width, height);
applet.init();
applet.start();
frame.setVisible(true);
}
}