¿Alguien tiene un programa de dibujo JAVA sencillo?

////Guarde un archivo pb.java para compilación y ejecución directa

import java.applet.*

import java.awt.*;

importar java.awt.*;

p>

importar java.awt.event.*

importar java.util.*; /p>

importar javax.swing.*;

importar java.awt.geom.*

importar java.io.*; class Point implementa Serializable

{

int x ,y;

Color col

int

int borde;

Punto(int x, int y, Color col , int herramienta, int borde)

{

this.x = x; /p>

this.y = y;

this.col = col;

this.tool = herramienta

this.boarder = huésped; ;

}

}

la clase paintboard extiende Frame implementa ActionListener,MouseMotionListener,MouseListener,ItemListener

{

int x = -1, y = -1;

int con = 1;//Tamaño del pincel

int Econ = 5;//Tamaño del borrador

int toolFlag = 0;//toolFlag: marca de herramienta

// tabla de correspondencia de herramientas toolFlag:

//(0--Brush); 2--Borrar);

//(3--Línea recta); (4--círculo); (5--rectángulo);

Color c = nuevo Color( 0,0,0); //Color del pincel

Tamaño del trazo básico = nuevo BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);//Grosor del pincel

Indicador de corte del punto = nuevo Point(-1, -1, c, 6, con);//Indicador de truncamiento

Vector paintInfo = null;//Grupo de vectores de información de puntos

int n = 1; /p>

FileInputStream picIn = nulo

FileOutputStream picOut = nulo

ObjectInputStream VIn = nulo

ObjectOutputStream VOut = nulo; >

// *Panel de herramientas: pincel, línea, círculo, rectángulo, polígono, borrador, borrar*/

Panel de herramientas

Botón borrador, drLine,drCircle, drRect;

Botón borrar,lápiz

Elección ColChoice,SizeChoice,EraserChoice;

/p>

Colchooser de botón;

Color de etiqueta, tamaño B, tamaño E

//Función de guardar

Botón openPic,savePic

p>

p>

FileDialog openPicture,savePicture;

tablero(String s)

{

super(s); >

addMouseMotionListener (this);

addMouseListener(this);

paintInfo = new Vector()

/*Botones de herramientas y selecciones*/

//Selección de color

ColChoice = new Choice();

ColChoice.add("negro"); add(" rojo");

ColChoice.add("azul");

ColChoice.add("verde"); this);

//Selección del tamaño del pincel

SizeChoice = new Choice()

SizeChoice.add("1"); p>ElecciónTamaño .add("3");

ElecciónTamaño.add("5");

ElecciónTamaño.add("7"); SizeChoice.add ("9");

SizeChoice.addItemListener(this);

//Selección del tamaño del borrador

EraserChoice = new Choice(); /p>

EraserChoice.add("5");

EraserChoice.add("9");

EraserChoice.add("13"); >

EraserChoice.add("17");

EraserChoice.addItemListener(este); /// //////////////////////////////////

toolPanel = nuevo Panel() ;

borrar = nuevo Botón("borrar");

borrador = nuevo Botón("borrador");

bolígrafo = nuevo Botón("pincel");

p>

drLine = new Button("Dibujar una línea recta");

drCircle = new Button("Dibujar un círculo"); drRect = new Button("Dibujar un rectángulo ");

openPic = new Button("Abrir imagen");

savePic = new Button("Guardar imagen"); p>

colchooser = new Button ("Mostrar paleta");

//Cada evento de componente escucha

clear.addActionListener(this

); eraser.addActionListener(esto);

pen.addActionList

ener(esto);

drLine.addActionListener(este);

drCircle.addActionListener(este);

drRect.addActionListener(este); >

openPic.addActionListener(this);

savePic.addActionListener(this);

colchooser.addActionListener(this); ("Color del pincel",Label.CENTER);

Tamaño B = nueva etiqueta("Tamaño del pincel",Label.CENTER);

Tamaño E = nueva etiqueta("Tamaño del borrador); ",Label.CENTER);

//Agregar componente al panel

toolPanel.add(openPic);

toolPanel.add(savePic);

toolPanel.add(pluma);

toolPanel.add(drLine;

toolPanel.add(drCircle);

toolPanel.add); ( drRect);

toolPanel.add(Color); toolPanel.add(ColChoice);

toolPanel.add(TamañoB);

toolPanel.add(colchooser);

toolPanel.add(borrador);

toolPanel.add(tamaño E);

toolPanel.add(clear);

//Panel de herramientas al panel APPLET

add(toolPanel,BorderLayout.NORTH); ,60,900,600); setVisible(true);

validate();

//diálogo para guardar y cargar

openPicture = new FileDialog(this,"Abrir Imagen",FileDialog.LOAD);

openPicture.setVisible(false);

savePicture = new FileDialog(this,"Guardar imagen",FileDialog.SAVE);

savePicture.setVisible(false);

openPicture.addWindowListener(new WindowAdapter()

{

cierre de ventana pública vacía (WindowEvent e)

{ openPicture.setVisible(false);

});

savePicture.addWindowListener(new WindowAdapter()

{

cierre de ventana pública vacía (WindowEvent e)

p>

{ savePicture.setVisible(false);

});

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent e)

{ System.exit(0);}

}

}

pintura vacía pública (Gráficos g)

{

Gráficos2D g2d = (Gráficos2D)g

Punto p1,p2

n; = paintInfo.size();

if(toolFlag==2)

g.clearRect(0,0,getSize().width,getSize().height);/ /clear

for(int i=0; i

p1 = (Point)paintInfo.elementAt(i); = (Point)paintInfo.elementAt(i+1);

tamaño = new BasicStroke(p1.boarder,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL

g2d.setColor(p1); .col);

g2d.setStroke(tamaño);

if(p1.tool==p2.tool)

{

switch(p1.tool)

{

caso 0://brush

Line2D línea1 = nueva Line2D.Double(p1.x, p1.y , p2.x, p2.y);

g2d.draw(line1

romper

caso 1://borrador

g.clearRect(p1.x, p1.y, p1.boarder, p1.boarder);

romper

caso 3://dibuja una línea recta

Line2D línea2 = new Line2D.Double(p1.x, p1.y, p2.x, p2.y

g2d.draw(line2); p> break;

caso 4://dibuja un círculo

Ellipse2D elipse = new Ellipse2D.Double(p1.x, p1.y, Math.abs(p2.x- p1.x), Math.abs(p2.y-p1.y));

g2d.draw(ellipse);

break; 5:/ /Dibuja un rectángulo

Rectangle2D rect = new Rectángulo2D.Double(p1.x, p1.y, Math.abs(p2.x-p1.x), Math.abs(p2.y -p1.y ));

g2d.draw(rect);

romper

caso 6://truncar, omitir

i =i+1;

romper;

predeterminado:

}//interruptor final

}//end if

}//end for

}

public void itemStateChanged(ItemEvent e)

{

if(e.getSource()==ColChoice)//Color preseleccionado

{

Nombre de cadena = ColChoice.getSelectedItem();

if(nombre=="negro")

{c = nuevo Color(0,0,0 }

else if(nombre==); "rojo")

{c = nuevo Color(255,0,0);}

else if(name=="verde")

{ c = nuevo Color(0,255,0);}

else if(name=="azul")

{c = nuevo Color(0,0,255);}

}

else if(e.getSource()==SizeChoice)//Tamaño del pincel

{

Cadena seleccionada = SizeChoice.getSelectedItem(

if(selected=="1")

{

con = 1

tamaño = new BasicStroke(con); ,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL

}

else if(selected=="3")

{

con = 3;

tamaño = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL

}

else if(selected=="5); ")

{con = 5;

tamaño = nuevo BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

else if(selected=="7")

{con = 7;

tamaño = new BasicStroke(con,BasicStroke.CAP_BUTT,BasicStroke.JOIN_BEVEL

}

else if(selected=="9")

{con = 9;

tamaño = new BasicStroke(con,BasicStroke. CAP_BUTT,BasicStroke.JOIN_BEVEL);

}

}

else if(e.getSource()==EraserChoice)//Tamaño del borrador

{

String Esize = EraserChoice.getSelectedItem();

if(Esize=="5")

{ Econ = 5*2; }

else if(Esize=="9")

{ Econ = 9*2 }

else if(Esize=="13;

")

{ Economía = 13*2; }

else if(Esize=="17")

{ Economía = 17*3; }

}

}

public void mouseDragged(MouseEvent e)

{

Punto p1; >

switch(toolFlag){

caso 0://brush

x = (int)e.getX()

y = ( int)e.getY();

p1 = nuevo Punto(x, y, c, toolFlag, con);

paintInfo.addElement(p1); p>repintar();

romper;

caso 1://goma

x = (int)e.getX();

y = (int)e.getY();

p1 = nuevo Punto(x, y, nulo, toolFlag, Econ)

paintInfo.addElement(p1) ;

repintar();

romper;

predeterminado:

}

}

public void mouseMoved(MouseEvent e) {}

public void update(Gráficos g)

{

paint(g);

}

mousePressed public void(MouseEvent e)

{

Punto p2

switch(toolFlag){

p>

caso 3://línea recta

x = (int)e.getX()

y = (int)e.getY ();

p2 = nuevo Punto(x, y, c, toolFlag, con

paintInfo.addElement(p2); /p>

caso 4: //Círculo

x = (int)e.getX();

y = (int)e.getY(); p>

p2 = nuevo Punto(x, y, c, toolFlag, con);

paintInfo.addElement(p2

break; >caso 5: // Rectángulo

x = (int)e.getX();

y = (int)e.getY(); p2 = nuevo Punto(x, y, c, toolFlag, con);

paintInfo.addElement(p2);

break; p>

}

}

public void mouseReleased(MouseEvent e)

{

Punto p3;

cambiar(toolFlag ){

caso 0://paintbrush

paintInfo.addElement(cutflag

);

romper;

caso 1: //borrador

paintInfo.addElement(cutflag); >

caso 3://línea recta

x = (int)e.getX();

y = (int)e.getY(); >

p3 = nuevo Punto(x, y, c, toolFlag, con);

paintInfo.addElement(p3);

paintInfo.addElement(cutflag); p >

repintar();

romper;

caso 4: //círculo

x = (int)e.getX(); /p> p>

y = (int)e.getY();

p3 = nuevo Punto(x, y, c, toolFlag, con); .addElement( p3);

paintInfo.addElement(cutflag);

repintar();

romper

caso 5: //Rectángulo

x = (int)e.getX();

y = (int)e.getY()

p3 = nuevo punto (x, y, c, toolFlag, con);

paintInfo.addElement(p3

paintInfo.addElement(cutflag)

repintar();

repintar();

paintInfo.addElement(cutflag); p>

romper;

}

public void mouseEntered(MouseEvent e){}

public void mouseExited(MouseEvent e){}

public void mouseClicked (MouseEvent e){}

acción public voidPerformed(ActionEvent e)

{

if(e.getSource()==pen)//Brush

{toolFlag = 0;}

if(e.getSource() ==eraser)//Eraser

{toolFlag = 1;}

if(e.getSource()==clear)//Borrar

{

toolFlag = 2

paintInfo.removeAllElements(); /p>

repaint();

}

if (e.getSource()==drLine)//Dibuja una línea

{toolFlag = 3;}

if(e.getSource()==drCircle)//Dibujar un círculo

{toolFlag = 4;}

if(e .getSource()==drRect)//Dibujar un rectángulo

{toolFlag = 5;}

if(e.getSource()==colchooser)//Paleta

{

Color nuevoColor = J

ColorChooser.showDialog(this,"Paleta",c);

c = newColor

}

if(e.getSource()== openPic) //Abre la imagen

{

openPicture.setVisible(true);

if(openPicture.getFile()!=null)

{

int tempflag;

tempflag = herramientaFlag;

toolFlag = 2

repintar();

prueba{

paintInfo.removeAllElements();

Archivo filein = new File(openPicture.getDirectory(),openPicture.getFile()); >picIn = nuevo FileInputStream(filein);

VIn = nuevo ObjectInputStream(picIn);

paintInfo = (Vector)VIn.readObject(); .close();

repintar();

toolFlag = tempflag

}

catch(ClassNotFoundException IOe2)

p>

{

repaint();

toolFlag = tempflag;

System.out.println("no se puede leer el objeto ");

}

catch(IOException IOe)

{

repintar();

toolFlag = tempflag;

System.out.println("no se puede leer el archivo"

}

}

}

p>

if(e.getSource()==savePic)//Guardar imagen

{

savePicture.setVisible(true); {

Salida de archivo = new File(savePicture.getDirectory(),savePicture.getFile());

picOut = nueva FileOutputStream(salida de archivo); = nuevo ObjectOutputStream( picOut);

VOut.writeObject(paintInfo

VOut.close()

}

catch); (IOException IOe)

{

System.out.println("no se puede escribir el objeto");

}

}

}

}//end paintboard

clase pública pb

{

public static void main(String argumento

s[])

{ nuevo tablero("programa de pintura" ​​}

}

v>