Newsgroup: it.comp.java
Titolo: Problema con gestione eventi mouse

Salve, devo disegnare su un Jpane un rettangolo che sia centrato sul
punto che ho cliccato, sono giorni che ci sto impazzendo, ma non riesco
a fare niente di buono...
Allora, ho creato la classe Mypane che estende Jpanel e implementa
mouse Listner.Hinserito le mie intefaccie mouseclicked, mousepressed,
etc...
A questo punto vado a ridefinire il metodo paintCOmponent per disegnare
sul Jpanel.
COme potrei fare per avere le posizioni del mouse nel metodo
g.drawRect(x, y, a, b)?Io vorrei che x = e(il mio evento del
mouse).getX() e y=e.getY(), ma non funziona, non so come fare!

 ma non funziona, non so come fare!
Non funziona e' piuttosto generico, magari un po' di codice aiuterebbe 
nel consigliarti.
Io cmq memorizzerei le coordinate del click nel corpo del metodo 
mouseClicked e poi le utilizzerei in paintComponent per disegnare il 
rettangolo.
Saluti
CarMas

Perfetto, ma come faccio per memorizzarle?
int x=e.getX();
int y=e.getY();
 e poi per richiamarle nel paint come devo fare?
Scusa se sono stato generico, ma non sono un po' all prime armi con la
programmazione event driven..

 int y=e.getY();
public class Mypane extends JPanel implements MouseListener {
   private int x,y;
   // altro codice
   public void mouseClicked(MouseEvent e) {
      x=e.getX();
      y=e.getY();
   }
   // altri metodi
   public void paintComponent(Graphics g) {
     super.paintComponent(g);
     g.drawRect(x,y,a,b);  // come ti pare
     ....
   }
}
Con le opportune gestioni del caso (ma queste le lascio a te).
Saluti
CarMas

CarMas ha scritto:

Grazie mille, era proprio dove mi piantavo, non so come ringraziarti

Purtroppo quando vado a lanciare il main nel quale si crea un MyPanel e
lo si aggiunge a un Jframe il rettangolo rimane nell'angolo sx
superiore, dato che x e y rimangono iizializzati a zero...

 superiore, dato che x e y rimangono iizializzati a zero...
Lo so bene, infatti avevo espressamente scritto "con le opportune 
gestioni del caso". Sta a te trovare un espediente per dirgli quando 
deve disegnare il rettangolo e quando non lo deve fare!
Saluti
CarMas

Infatti ottengo questo errore:
java.awt.EventDispatchTread.pumpEvents(UNknowSource)
che non so come Risolvere...
Comunuqe mi documenterò un po'....

Io non riesco ad andare avanti...Se qualche anima buona sa aiutarmi....
Ecco il codice della classe MyPanel
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JPanel;
public class MyPanel extends JPanel implements MouseListener{
	JPanel pan;
	Point p;
	boolean flag;
	public MyPanel(){
		setFlag(false);
		JPanel pannello =new JPanel();
		pannello.addMouseListener(this);
		addMouseListener(this);
	}
	private void setPunto(int a, int b){
		p.x=a;
		p.y=b;
	}
	private void setFlag(boolean b)	{
		flag=b;
		}
	public void mouseClicked(MouseEvent e) {
	try {
		setPunto(e.getX(), e.getY());
	}catch(Exception ex){}
	}
	public void mousePressed(MouseEvent e) {}
	public void mouseReleased(MouseEvent e) {}
	public void mouseEntered(MouseEvent e) {
		setFlag(true);
	}
	public void mouseExited(MouseEvent e) {
		setFlag(false);
	}
	public void paintComponent(Graphics g) {
		super.paintComponent(g);
		g.setColor(Color.RED);
		if(flag=true) {
 
		g.drawRect(p.x, p.y, 20, 30);
 
 
	 }
			}
 
		}

 	}catch(Exception ex){}
Questo catch serve per il NullPointerException, visto che p non lo 
inizializzi mai? ;P
Pensaci sopra stanotte, domani ne riparliamo e vediamo cosa abbiamo 
ottenuto.
Saluti
CarMas