Java - ayuda con graphics java

 
Vista:
sin imagen de perfil

ayuda con graphics java

Publicado por Daniel (2 intervenciones) el 08/08/2014 04:17:49
Hi good day, Im trying to wtite a code to do: paint a circle, a square or rectangle, several times and using a specific color, then here my code


public class FormularioF extends JFrame implements ActionListener {

private JLabel label1,label2,label3; // labels Figura Color y Cantidad
private JComboBox Menu1,Menu2,Menu3;// menus Figura Color y Cantidad
private JButton boton1, boton2;// boton de graficar deacuerdo a lo seleccionado o aleatorio
int n1;// cantidad de figuras
private int x1 = 400;// variables de posicion de las figuras
private int x2 = 500;
private int x3 = 600;
private int y1 = 55;
private int y2 = 55;
private int y3 = 105;
private Paint paint1;

private String Amarillo="Amarillo";// Definicion de colores para comparar
private String Azul="Azul";
private String Rojo="Rojo";
private String Circulo="Circulo";
private String Cuadrado="Cuadrado";
private String Rectangulo="Rectangulo";
Graphics n;


public FormularioF() {// constructor por defecto
setLayout(null);
setTitle("Drawing");

label1=new JLabel("Color");// definicion de labels opciones y botones
label1.setBounds(10,10,100,30);
add(label1);

Menu1=new JComboBox();
Menu1.setBounds(120,10,100,30);
Menu1.addItem("Amarillo");
Menu1.addItem("Azul");
Menu1.addItem("Rojo");
add(Menu1);

label2=new JLabel("Figura");
label2.setBounds(10,50,100,30);
add(label2);

Menu2=new JComboBox();
Menu2.setBounds(120,50,100,30);
Menu2.addItem("Circulo");
Menu2.addItem("Cuadrado");
Menu2.addItem("Rectangulo");
add(Menu2);

label3=new JLabel("Numero");
label3.setBounds(10,90,100,30);
add(label3);

Menu3=new JComboBox();
Menu3.setBounds(120,90,40,30);
Menu3.addItem("1");
Menu3.addItem("2");
Menu3.addItem("3");
add(Menu3);

boton1=new JButton("Graficar");
boton1.setBounds(10,130,100,30);//x,y ancho, alto
add(boton1);
boton1.addActionListener(this);

boton2=new JButton("Graficar Aleatorio");
boton2.setBounds(10,180,200,30);//
add(boton2);
boton1.addActionListener(this);
}
public static void main(String[] ar){
FormularioF f1=new FormularioF();// constructor
f1.setSize(500,500);//100,50,500,300
f1.setVisible(true);
f1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void paint2(Graphics g) {
paint1.paint(g);
}

public void actionPerformed(ActionEvent e) {

Color colord;
String ColorS,FiguraS;// variable donde se almacena el color y la figura seleccionada
int numAleatorio;
String ns;
if (e.getSource()==boton1) {// boton para graficar deacuerdo a lo seleccionado
//f.setVisible(false);// instrucciones para refrescar el frame
//repaint();

ns=(String)Menu3.getSelectedItem(); // variable de cantidad de figuras
n1=Integer.parseInt(ns);

ColorS=(String)Menu1.getSelectedItem(); // color

FiguraS=(String)Menu2.getSelectedItem(); //figura
if(ColorS.compareTo(Amarillo)==0){// se asigna el color
colord = new Color(255, 255, 0);
}
else if(ColorS.compareTo(Azul)==0){
colord = new Color(0, 0, 255);
}
else{
colord = new Color(255, 0, 0);
}
paint1= new Paint (colord,FiguraS, x1,y1);
for(int i=0; i<n1 ;i++){// se dibuja el numero de figuras y se posicicionan
if(i==0){
paint1.paint(n);
//paint1= new Paint (colord,FiguraS, x1,y1);
System.out.println(ColorS);
System.out.println(FiguraS);
System.out.println(ns);
//f.add(paint(n,colord,FiguraS, x1,y1));
// lo adiciona a la ventana en la posicion para la primera figura
}
else if(i==1){
System.out.println(ColorS);
System.out.println(FiguraS);
System.out.println(ns);
//paint1= new Paint (colord,FiguraS, x2,y2);
}
//f.add(paint(n,colord,FiguraS, x2,y2));// lo adiciona a la ventana
else{
//paint1= new Paint (colord,FiguraS, x3,y3);
//f.add(paint(n,colord,FiguraS, x3,y3));// lo adiciona a la ventana
}
}
repaint();
}

if (e.getSource()==boton2){// boton para aleatorio

//f.setVisible(false);
repaint();
numAleatorio = (int)Math.floor(Math.random()*(3-1)+1);// arroja un numero entre 1 y 3
if(numAleatorio==1){// de acuerdo al numero aleatorio grafica una figura un color y un cantida diferente
colord = Color.yellow;
FiguraS= "Circulo";
}
else if(numAleatorio==2){
colord = Color.blue;
FiguraS= "Cuadrado";
}
else{
colord = Color.red;
FiguraS= "Rectangulo";
}
for(int i=0; i<numAleatorio;i++){
if(i==0)
paint1= new Paint (colord,FiguraS, x1,y1);
//f.add(paint(n,colord,FiguraS, x1,y1));//
else if(i==1)
paint1= new Paint (colord,FiguraS, x2,y2);
//f.add(paint(n,colord,FiguraS, x2,y2));// lo adiciona a la ventana
else{
paint1= new Paint (colord,FiguraS, x3,y3);
//f.add(paint(n,colord,FiguraS, x3,y3));// lo adiciona a la ventana
}
}
}
}
public void windowClosing(WindowEvent e){

System.exit(0);
}

public void windowIconified(WindowEvent e){
}

public void windowOpened(WindowEvent e){
}

public void windowClosed(WindowEvent e) {
}

public void windowDeiconified(WindowEvent e) {
}

public void windowActivated(WindowEvent e) {
}

public void windowDeactivated(WindowEvent e) {
}
}


import java.awt.*;

public class Paint {
private Color colord;
private String FiguraS;
int x,y;


public Paint(Color colord, String FiguraS, int x, int y) {

this.colord = colord;
this.FiguraS = FiguraS;
this.colord = colord;
this.FiguraS = FiguraS;
this.x=x;
this.y=y;
}

public void paint(Graphics g) {
int ancho=80;// ancho y alto de las figuras
int alto=40;
g.setColor(colord); // toma el color seleccionado
if(FiguraS.compareTo("Circulo")==0){// si se da=0 es que selecciono determinada figura
g.fillOval(x,y,alto,alto);

}
else if(FiguraS.compareTo("Cuadrado")==0){
g.fillRect(x,y,ancho,alto);
}
else{
g.fillRect(x,y,ancho,ancho);
}
}
}


Im having this:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at Paint.paint(Paint.java:36)
at FormularioF.paint2(FormularioF.java:100)
at FormularioF.actionPerformed(FormularioF.java:130)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)

I need your help thanks
Bless you
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

ayuda con graphics java

Publicado por Tom (1831 intervenciones) el 08/08/2014 12:06:56
Estás pasando Graphics a null al método Paint.paint(Graphics g)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

ayuda con graphics java

Publicado por Daniel (2 intervenciones) el 08/08/2014 14:40:51
se que eso significa el erro pero no se que estoy haciendo mal.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar