[ stryder @ 22.02.2011. 08:41 ] @
Pokusao sam da napravim jednostavan program za crtanje poligona misem. Hteo sam da svaki klik misem zapise koordinate kliknutog mesta u odgovarajucu tacku i onda se samo iscrta poligon sa tim tackama. Na primer, samo 4 tacke kako bih dobio neki cetvorougao.
Shvatio sam da kada se klikne misem negde, te koordinate se upisu u sve 4 tacke, a ne samo u jednu, pa posle u narednu itd. Kako to da resim?

Code:
import acm.graphics.*;
import acm.program.*;
import java.awt.event.*;

public class Pravougaonik extends GraphicsProgram {
    public void run() {
        addMouseListeners();    
    }
    public void mouseClicked(MouseEvent e) {
        GPolygon cetvorougao = new GPolygon();
        cetvorougao.addVertex(e.getX(),e.getY());
        cetvorougao.addVertex(e.getX(),e.getY());
        cetvorougao.addVertex(e.getX(),e.getY());
        cetvorougao.addVertex(e.getX(),e.getY());
        add(cetvorougao);        
    }
}
[ bantu @ 22.02.2011. 12:22 ] @
Code:

public class Pravougaonik extends GraphicsProgram {
    GPolygon cetvorougao = new GPolygon();
    public void run() {
         add(cetvorougao);
         addMouseListeners();    
    }
    public void mouseClicked(MouseEvent e) {        
        cetvorougao.addVertex(e.getX(),e.getY());
    // mozda ga ovde poslije moras repaintovati, nije mi poznat ovaj framework
    }
}
[ stryder @ 22.02.2011. 13:45 ] @
Mislim da nije do repaint-a. Problem mi je samo kako da svaki klik misem tj. njegove koordinate uskladistim u drugu promenljivu. Na ovaj nacin se iste koordinate upisu u sva cetiri temena i dobijam samo tacku.
Moze i neki predlog kako da ovo drugacije resim
[ bgd2500 @ 22.02.2011. 16:27 ] @
Hint:
Code:

public class Pravougaonik extends GraphicsProgram {
  private GPolygon cetvorougao;
  private int count = 0;

  public void run() {
    addMouseListeners();    
  }
  public void mouseClicked(MouseEvent e) {
    if (count == 0) {
      cetvorougao = new GPolygon();
    }
    cetvorougao.addVertex(e.getX(),e.getY());
    count++;
    if (count == 4) {
      add(cetvorougao);
      count = 0;
    }
  }
}
[ stryder @ 24.02.2011. 15:38 ] @
To je resenje! Sad kad vidim, deluje krajnje jednostavno, samo se treba setiti :)
Problem je bio sto sam ja sa svakim klikom iznova i iznova pravio novi poligon, a nisam se setio da stavim neki uslov koji bi to onemogucio.
Hvala puno za pomoc!