PDA

View Full Version : [JAVA] Creazione cerchi


daddoncello
06-02-2013, 17:20
Salve, sono nuovo del forum, avrei bisogno di una mano...devo creare un'applet in cui facendo click col mouse crei un cerchio. Il problema è che quando riclicco, il cerchio si sposta invece di crearne un altro...Qualcuno può aiutarmi? Vi posto il codice:

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

public class nome extends Applet implements MouseListener
{
int X, Y;

public void init()
{
addMouseListener(this);
}

public void paint(Graphics g)
{
g.drawString("Creazione cerchi",150,150);
g.fillOval(X,Y,20,20);
}

public void mousePressed(MouseEvent E)
{
X=E.getX();
Y=E.getY();
}

public void mouseReleased(MouseEvent E){}
public void mouseEntered(MouseEvent E){}
public void mouseExited(MouseEvent E){}
public void mouseClicked(MouseEvent E){}
}

banryu79
06-02-2013, 17:46
Funziona così: ad ogni evento di "repaint" il graphics viene ridisegnato da zero, cioè quando si aggiorna il disegno vengono rieseguite le operazioni contenute nel metodo "paint".

Quindi se tu ad ogni click del mouse ti limiti a memorizzare la posizione XY del mouse pointer in due variabili che poi usi nel "paint" per disegnare un solo cerchio succede quello che hai già esperito.

Come potresti fare? Ad esempio gestendo una lista di queste coordinate.
Ad ogni click del mouse sul disegno aggiungi una nuova coppia XY di coordinate alla lista; nel "paint" disegni un cerchio per ogni elemento di questa lista di coordinate.

daddoncello
07-02-2013, 14:33
Sono riuscito in parte a risolvere il problema dei cerchi ma dopo che aggiungo il bersaglio non va più...


import java.awt.*;
import java.applet.*;
import java.awt.event.*;
public class cerchio extends Applet
{
public void paint(Graphics g)
{
g.setColor(Color.BLACK);
g.fillOval(100, 100, 300, 300);
g.setColor(Color.RED);
g.fillOval(125, 125, 250, 250);
g.setColor(Color.BLACK);
g.fillOval(150, 150, 200, 200);
g.setColor(Color.RED);
g.fillOval(175, 175, 150, 150);
g.setColor(Color.BLACK);
g.fillOval(200, 200, 100, 100);
}

public boolean mouseClick(MouseEvent E, int X, int Y)
{
Graphics g=getGraphics();
g.setColor(Color.RED);
g.fillOval(X,Y,10,10);
return true;
}

}