Need help making an applet that displays a pie chart.
So I'm working on an applet that takes in 4 different user input values and displays them via a pie chart. I've done all the calculations to divide up the input values and insert them into each piece of the pie chart, inserted them. That's all I have to say, sorry, help, please.
I keep getting a -> java.lang.NullPointerException exception in my paint function. Frankly my eyes are a little tired of looking at this code and I'm not sure what's wrong with this code.
*noRisk = Double.parseDouble(noRiskTextField.getText()) ;*//line that is highlighted as error.
Code:
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JFrame;
import java.applet.Applet;
import java.awt.event.ActionListener;
import javax.swing.*;
import java.awt.*;
//import javax.swing.border.EtchedBorder;
//import javax.swing.border.TitledBorder;
import java.awt.event.ActionEvent;
public class PieChart extends Applet implements ActionListener
{
Double switchy;
String doesItMatch = "";
//Declare GUI components
private double noRisk;
private double lowRisk;
private double moderateRisk;
private double highRisk;
private double noValue;
private double lowValue;
private double moderateValue;
private double highValue;
private double totalValue;
private double noSlice = 0;
private double lowSlice = 0;
private double moderateSlice = 0;
private double highSlice = 0;
private double tempPie1 = 0;
private double tempPie2 = 0;
private JTextField noRiskTextField;
private JTextField lowRiskTextField;
private JTextField moderateRiskTextField;
private JTextField highRiskTextField;
private JLabel noRiskLabel;
private JLabel lowRiskLabel;
private JLabel moderateRiskLabel;
private JLabel highRiskLabel;
private JButton drawButton = new JButton();
private JButton resetButton = new JButton();
//implement pieChart as init for JApplet
public void innit()
{
//Create Buttons
drawButton = new JButton("Draw Pie Chart");
add(drawButton);
drawButton.addActionListener(this);
drawButton.setActionCommand("Draw");
resetButton = new JButton("Reset");
add(resetButton);
resetButton.addActionListener(this);
drawButton.setActionCommand("Reset");
//Create text fields
noRiskTextField = new JTextField("",10);
add(noRiskTextField);
lowRiskTextField = new JTextField("",10);
add(lowRiskTextField);
moderateRiskTextField = new JTextField("",10);
add(moderateRiskTextField);
highRiskTextField = new JTextField("",10);
add(highRiskTextField);
//Create text labels
noRiskLabel = new JLabel("No Risk");
add(noRiskLabel);
lowRiskLabel = new JLabel("Low Risk");
add(lowRiskLabel);
moderateRiskLabel = new JLabel("Moderate Risk");
add(moderateRiskLabel);
highRiskLabel = new JLabel("High Risk");
add(highRiskLabel);
setSize(350,425);
}
public void paint(Graphics g)
{
super.paint(g);
if(doesItMatch == "fillColor");
{
//get risk values, convert from string to double
noRisk = Double.parseDouble(noRiskTextField.getText()) ;
lowRisk = Double.parseDouble(lowRiskTextField.getText());
moderateRisk = Double.parseDouble(moderateRiskTextField.getText());
highRisk = Double.parseDouble(highRiskTextField.getText());
setBackground(Color.WHITE);
//Determine the percentage of total pie value
//as well as individual components of pie.
totalValue = noRisk + lowRisk + moderateRisk + highRisk;
noValue = ((noRisk/totalValue) *100);
lowValue = ((lowRisk/totalValue) * 100);
moderateValue = ((moderateRisk/totalValue) * 100);
highValue = ((highRisk/totalValue) *100);
//Use percentages of pie slices and distrubute by 360
noSlice = (noValue * 360/100);
lowSlice = (lowValue * 360/100);
moderateSlice = (moderateValue * 360/100);
highSlice = (highValue * 360/100);
tempPie1 = highSlice + moderateSlice;
tempPie2 = tempPie1 + lowSlice;
//fill in slices with color
g.setColor(Color.RED);
g.fillArc(100, 100, 200, 200, (int) tempPie2 ,(int) noSlice);
g.setColor(Color.BLUE);
g.fillArc(100, 100, 200, 200, (int) tempPie1 ,(int) lowSlice);
g.setColor(Color.YELLOW);
g.fillArc(100, 100, 200, 200, (int) highSlice ,(int) moderateSlice);
g.setColor(Color.GREEN);
g.fillArc(100, 100, 200, 200, 0 ,(int) highSlice);
}
}//End Paint
//update the painted pie chart
public void update(Graphics g)
{
paint(g);//will repaint g with the updated values
}//end update
public void actionPerformed(ActionEvent e)
{
//Object source = e.getSource();
if(e.getActionCommand() == "Draw")
{
doesItMatch = "fillColor";
repaint();
}
else if(e.getActionCommand() == "Reset")
{
doesItMatch = "";
noRiskTextField.setText("");
lowRiskTextField.setText("");
moderateRiskTextField.setText("");
highRiskTextField .setText("");
repaint();
}
}
}