awt elegir color y pintar

dada44
21 de Enero del 2004
Hola a todos,
Tengo un frame con unos cuadrados de colores, de tal modo que cuando hago clic sobre un color luego al arrastrar con el mouse debería pintar con el color elegido.
Bien simple, pues no hay manera .. sé que hago algo mal en public void mouseClicked(MouseEvent e)
pero no sé que.
Aquí va el codigo sin nada en este método por si a alguien se le ocurre como hacerlo.
Miles de gracias por adelantado!



import java.awt.*;
import java.awt.event.*;

public class E3Events
extends Frame
implements MouseListener, MouseMotionListener
{
Color colorActual;

public static void main(String[] args)
{
E3Events e3 = new E3Events();
e3.setTitle("Paint");
e3.setSize(500, 500);
e3.addMouseListener(e3);
e3.addMouseMotionListener(e3);
e3.show();
}
public void paint(Graphics g)
{
g.setColor(Color.GREEN);
g.fillRect(0, 0, 100, 100);
g.setColor(Color.YELLOW);
g.fillRect(100, 0, 100, 100);
g.setColor(Color.RED);
g.fillRect(200, 0, 100, 100);
g.setColor(Color.ORANGE);
g.fillRect(300, 0, 100, 100);
g.setColor(Color.BLUE);
g.fillRect(400, 0, 100, 100);

}
public void mouseDragged(MouseEvent e)
{
Graphics g = getGraphics();
g.setColor(colorActual);
int x = e.getX();
int y = e.getY();
g.fillOval(x, y, 10, 10);
}
public void mouseClicked(MouseEvent e)
{


}
/**
* @see java.awt.event.MouseListener#mouseEntered(MouseEvent)
*/
public void mouseEntered(MouseEvent arg0)
{
}
/**
* @see java.awt.event.MouseListener#mouseExited(MouseEvent)
*/
public void mouseExited(MouseEvent arg0)
{
}
/**
* @see java.awt.event.MouseListener#mousePressed(MouseEvent)
*/
public void mousePressed(MouseEvent arg0)
{
}
/**
* @see java.awt.event.MouseListener#mouseReleased(MouseEvent)
*/
public void mouseReleased(MouseEvent arg0)
{
}
/**
* @see java.awt.event.MouseMotionListener#mouseMoved(MouseEvent)
*/
public void mouseMoved(MouseEvent arg0)
{
}


kabuto
21 de Enero del 2004
import java.awt.*;
import java.awt.event.*;

public class E3Events
extends Frame
implements MouseListener, MouseMotionListener
{
public Color color;
public Color[] colores = {
Color.BLACK, Color.RED, Color.CYAN, Color.green,
Color.magenta, Color.orange, Color.YELLOW, Color.gray, Color.white};
// altura de las paletas de colores
public int alto = 100;
public int ancho = 200;

public static void main (String[] args) {
E3Events e3 = new E3Events();
e3.setTitle("Paint");
e3.setSize(800, 600);
e3.addMouseListener(e3);
e3.addMouseMotionListener(e3);
e3.show();
}

public void paint (Graphics g) {
int ancho = getWidth() / colores.length;
for (int i = 0; i < colores.length; i++) {
g.setColor(colores[i]);
g.fillRect(i * ancho, 0, ancho, alto);
}

}

public void mouseDragged (MouseEvent e) {
Graphics g = getGraphics();
g.setColor(color);
int x = e.getX();
int y = e.getY();
g.fillOval(x, y, 10, 10);
}

public void mouseClicked (MouseEvent e) {

}

/**
* @see java.awt.event.MouseListener#mouseEntered(MouseEvent)
*/
public void mouseEntered (MouseEvent e) {
}

/**
* @see java.awt.event.MouseListener#mouseExited(MouseEvent)
*/
public void mouseExited (MouseEvent e) {
}

/**
* @see java.awt.event.MouseListener#mousePressed(MouseEvent)
*/
public void mousePressed (MouseEvent e) {
// Si el raton esta dentro de la zona de las paletas
if (e.getY() > alto) {
return;
}
// Selecciona el color segun el click del raton en el
// color seleccionado

int ancho = getWidth() / colores.length;
int x = e.getX();
color = colores[x / ancho];
}

/**
* @see java.awt.event.MouseListener#mouseReleased(MouseEvent)
*/
public void mouseReleased (MouseEvent e) {
}

/**
* @see java.awt.event.MouseMotionListener#mouseMoved(MouseEvent)
*/
public void mouseMoved (MouseEvent e) {
}

public E3Events () {
try {
jbInit();
}
catch (Exception e) {
e.printStackTrace();
}
}

private void jbInit () throws Exception {
this.addWindowListener(new E3Events_this_windowAdapter(this));
}

void this_windowClosing (WindowEvent e) {
System.exit(0);
}
}

class E3Events_this_windowAdapter
extends java.awt.event.WindowAdapter
{
E3Events adaptee;

E3Events_this_windowAdapter (E3Events adaptee) {
this.adaptee = adaptee;
}

public void windowClosing (WindowEvent e) {
adaptee.this_windowClosing(e);
}
}

dada te he hecho unas pequeñas modificaciones. Para que te seleccionara el color debes de poner el codigo en el mousePressed.

Un saludo y espo haberte ayudado