applet java grafico

Aperto da piketto, 25 Maggio 2007, 13:06:57

Discussione precedente - Discussione successiva

0 Utenti e 1 Visitatore stanno visualizzando questa discussione.

piketto

ciao ragazzi,

avrei bisogno di un piccolo aiuto per creare un programmino semplice: dovrei fare un applet con un grafico cartesiano, inserire e togliere con il mouse dei punti... tutto qua... ho poca esperienza di java, e sono riuscito a fare solamente un grafico fatto tutto di rette che si incrociano... per fare i quadratini. qualcuno mi può aiutare? GRAZIE!

ora vi metto il codice da me fatto:

import java.awt.*;

public class Griglia extends java.applet.Applet {
public void paint(Graphics g) {
int x,y;

/* disegna le linee verticali */
for(x=0; x<=200; x=x+10) {
g.drawLine(x, 0, x, 200);
}

/* disegna le linee orizzontali */
for(y=0; y<=200; y=y+10) {
g.drawLine(0, y, 200, y);
}
}
}

questo per quanto riguarda la griglia...

come posso fare per cliccare con il mouse per inserire dei punti?

benna

prima di tutto devi implementare nella classe l'interfaccia MouseListener e dichiarare l'interesse agli eventi del mouse con

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

a questo punto devi "overridare" il metodo mouseClicked della classe MouseListener in questo modo

public void mouseClicked(MouseEvent e)
{
//leggo le coordinate del mouse
double x=e.getX();
double y=e.getY();
//chiamo il metodo per disegnare il punto
disegnaPunto(x,y);
repaint();
}

ora non ti resta che creare il metodo disegnaPunto che disegni un cerchio di raggio 1 e di coordinate x ed y

EDIT: nel metodo init devi scrivere addMouseListener(this);



Questo messaggio è stato aggiornato da benna il 26/05/2007  alle ore  13:12:30

piketto

ciao e grazie per la risposta, ho cosi svolta per ora:

import java.awt.*;

public class prova2 extends java.applet.Applet {
  public boolean mouseDown(Event e, int a, int b) {
    Graphics g=getGraphics();

    g.fillRect(a-2,b-2,4,4);
     
  return true;
  }

  public void paint(Graphics g) {
    int x,y;
  for(x=0; x<=200; x=x+10) {
      g.drawLine(x, 0, x, 200);
    }
for(y=0; y<=200; y=y+10) {
      g.drawLine(0, y, 200, y);
    }  
  }

ora... come posso fare, per togliere con il click del tasto destro mouse, il punto dalla griglia? grazieeeeeeeeeeeee

benna

nel metodo mouseClicked() devi inserire questo controllo:

if(e.getModifiers()==InputEvent.BUTTON1_MASK)//tasto sinistro
{
...
}
else if(e.getModifiers()==InputEvent.BUTTON3_MASK)//tasto destro
{
...
}

quando viene premuto il tasto destro disegni un punto col colore dello sfondo invece che nero



Questo messaggio è stato aggiornato da benna il 29/05/2007  alle ore  19:59:33

piketto

Ciao e inanzittuo grazie per l'aiuto...

secondo te qua dove sbaglio? perchè voglio limitare i punti a 10 e inserirli solo con il click del mouse destro:

public PuntiClick() {
       
  punti = new Ellipse2D.Double[10];
  numPunti = 0;
  messaggio = "clicca per aggiungere un punto";

class AscoltaClick extends MouseAdapter
      {
      public void BUTTON1(MouseEvent e)
      {
      if(numPunti>=punti.length)
      messaggio = "basta cosi'";
      else
      {
      x = e.getX();
      y = e.getY();
      punti[numPunti] = new Ellipse2D.Double(x-2, y-2, 4, 4);
      numPunti++;
      }
Grazie... di java non sono molto pratico... ma devo fa st'esercizio!

benna

Ciao,
l'errore è nel metodo BUTTON1():
devi per prima cosa implementare il metodo mouseClicked() nella classe AscoltaClick, in questo metodo inserirai il controllo
 if(numPunti<=punti.length && e.getButton()==BUTTON3)
...
else messaggio="basta così"

così dovrebbe andare, fammi sapere


marcoff

io ci sono ma nn mi intrometto ;)

Ottimo lavoro benny.:)

.... when i am good, i am good..... when i am bad, i am better...

benna

Grazie Marcoff:)
P.S. Intromettiti pure se vuoi ;)


piketto

nn ci capisco niente cn java :(
se mi potete aiutare vi faccio vedere cosa dovrei svolgere:

dovrei creare una piccola applet java che mi permetta di:
- realizzare un piano cartesiano (FATTO)
- aggiungere con il tasto sinistro del mouse un punto (bene o male fatto)
- togliere un punto con il tasto destro del mouse
- trovare i massimali (realizzarli cn un colore diverso per esempio) e creare una linea frontiera (nella quale ci siano tutti i punti dentro, un confine)

con java non ci capisco molto e questo sarebbe la mia prima applicazione... la griglia a piano cartesiano sono riuscito a farla, ma con le classi del mouse nn mi trovo molto bene...

benna

Ho abbozzato un' applet che esegue quello che hai chiesto, se ci sarà qualche cosa da modificare lo modificheremo ;)