NullPointerException Error
I am trying to create a paint program. I am using Eclipse SDK and I keep getting this error:
Exception in thread "main" java.lang.NullPointerException
at Button2.setColor(Button2.java:68)
at Button2.<init>(Button2.java:30)
at EmptyFrameTest.main(EmptyFrameTest.java:9)
Here are my three classes:
1st
[HTML] Code:
import java.applet.*;
import java.awt.*;
import java.awt.event.ActionEvent;
public class ColorScribble extends Applet
{
private int last_x = 0;
private int last_y = 0;
public void actionPreformed(ActionEvent event)
{
}
// called when the user clicks
public boolean mouseDown(Event e, int x, int y)
{
last_x = x; last_y = y;
return true;
}
// called when the mouse moves with the button down
public boolean mouseDrag(Event e, int x, int y)
{
Graphics2D g2 = (Graphics2D) getGraphics();
Button2 test = new Button2();
test.paintComponent(g2, x, y, last_x, last_y);
last_x = x;
last_y = y;
return true;
}
}
2nd
Code:
import javax.swing.JFrame;
import java.applet.*;
import javax.swing.JPanel;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JComboBox;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.event.*;
import java.awt.*;
import javax.swing.*;
import java.awt.GridLayout;
public class Button2 extends JFrame
{
public Button2()
{
class ChoiceListener implements ActionListener
{
public void actionPerformed (ActionEvent event)
{
setColor();
}
}
listener = new ChoiceListener();
setLayout(new GridLayout(2,2))
createControlPanel();
setColor();
setSize(FRAME_WIDTH, FRAME_HEIGHT);
}
public void createControlPanel()
{
JPanel facenamePanel = createComboBox();
JPanel controlPanel = new JPanel();
controlPanel.setLayout(new GridLayout(3,1));
controlPanel.add(facenamePanel);
add(controlPanel);
}
public JPanel createComboBox()
{
facenameCombo = new JComboBox();
facenameCombo.addItem("Black");
facenameCombo.addItem("Blue");
facenameCombo.addItem("Red");
facenameCombo.addItem("Blue");
facenameCombo.addItem("Green");
facenameCombo.addItem("Orange");
facenameCombo.addItem("Pink");
facenameCombo.addItem("Yellow");
facenameCombo.setEditable(true);
facenameCombo.addActionListener(listener);
JPanel panel = new JPanel();
panel.add(facenameCombo);
return panel;
}
private Color color;
public void setColor()
{
System.out.println(facenameCombo);
String facename = (String) facenameCombo.getSelectedItem();
if (facename.equals("Blue")) color = (Color.BLUE);
else if(facename.equals("Black")) color = (Color.BLACK);
else if (facename.equals("Blue")) color = (Color.BLUE);
else if (facename.equals("Red")) color = (Color.RED);
else if (facename.equals("Green")) color = (Color.GREEN);
else if (facename.equals("Orange")) color = (Color.ORANGE);
else if (facename.equals("Pink")) color = (Color.PINK);
else if (facename.equals("Yellow")) color = (Color.YELLOW);
}
public void paintComponent(Graphics g, int x, int y, int last_x, int last_y)
{
g.setColor(color);
g.drawLine(x, y, last_x, last_y);
}
public JComboBox facenameCombo;
public String facename;
private ActionListener listener;
private static final int FRAME_WIDTH = 600;
private static final int FRAME_HEIGHT=800;
private JPanel panel;
private Graphics g;
private Graphics2D g2;
}
3rd.
Code:
import java.awt.GridLayout;
import javax.swing.JFrame;
public class EmptyFrameTest
{
public static void main (String [ ] args)
{
JFrame frame = new Button2();
frame.setSize(1200,700);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
ColorScribble scribble = new ColorScribble();
scribble.setSize(1100,700);
frame.add(scribble);
}
}
Any tips on how to fix?