PDA

Visualizza la versione completa : [java] getClickCount()


leorsid@
03-05-2002, 11:16
Scusate la mia banale domanda, ma il metodo getClickCount() non dovrebbe restituirmi il numero dei click che si fanno sul mouse? perché io l'ho utilizzato per aprire un JDialog al click del mouse ma me ne apre 3 consecutivamente? bo?:confused:

Mandrake978
03-05-2002, 11:23
Il metodo getClickCount() conta il numero di pressioni e rilasci del tastino del mouse...

leorsid@
03-05-2002, 11:31
scusami ma


public void mouseClicked(MouseEvent e) {
int x=e.getX();
int y=e.getY(); //verifico coordinate mouse
if (trova(x,y)>=1 && (e.getClickCount() >= 2) {
ordina = new OrdinaPosti();
ordina.show(); //creo il jdialog e lo visualizzo
}
}

allora non dovrebbe essere corretto cosí? perché me ne apre tre di ordina?

floyd
03-05-2002, 11:38
posta il codice dell'oggetto a ciu hai aggiunto il MouseListener

leorsid@
03-05-2002, 11:45
class pannello1 extends JPanel implements MouseMotionListener {
public void paintComponent(Graphics g){
super.paintComponent(g);
g.setFont(Arial_font_plain_14);
g.setColor(Color.black);
g.drawString(s1,10,20);
g.drawString(s2,10,35);
g.setColor(Color.blue);
g.drawString(s3,10,50);
g.setColor(Color.red);
g.drawString(s4,10,65);
g.setColor(Color.green);
g.drawString(s5,10,80);
setBackground(Color.white);
tk=Toolkit.getDefaultToolkit();
img=tk.getImage("checks.gif");
img1=tk.getImage("Mappa_arena.gif");
tracker=new MediaTracker(this);
tracker.addImage(img,0);
tracker.addImage(img1,1);
try {
tracker.waitForAll();
}
catch (InterruptedException e) {
System.out.println("Errore, impossibile caricare le immagini");
JOptionPane.showMessageDialog (null, "Impossibile caricare le immagini", "Errore", JOptionPane.ERROR_MESSAGE);
}
g.drawImage(img,323,0,this);
g.drawImage(img1,0,100,this);

addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {}

public void mouseClicked(MouseEvent e) {
int x=e.getX();
int y=e.getY(); //
if (trova(x,y)>=1 && (e.getClickCount() >= 2) ) {
ordina = new OrdinaPosti();
ordina.show();
}
}
});
addMouseMotionListener(this);
}

public void mouseDragged(MouseEvent e){ }
public void mouseMoved(MouseEvent e) {
int x = e.getX();
int y = e.getY();
if (trova(x, y) >= 0)
setCursor(Cursor.getPredefinedCursor(Cursor.HAND_C URSOR));
else
setCursor(Cursor.getDefaultCursor());
}
}

in pratica ho aggiunto il mouselistener al pannello

floyd
03-05-2002, 11:52
prova a usare mouseReleased al posto di mouseclicked

leorsid@
03-05-2002, 12:19
nulla, ho provato anche a togliere getmouseclicked() per fargli riconoscere un solo click, ma niente é come se riconoscesse piú click consecutivi che io non faccio!
Non penso che sia la classe trova xché verifica solo le coordinate x e y che gli passo:


protected int trova(int Posx, int Posy) {
if (Posx>=10 && Posx<=40 && Posy>=360 && Posy<=370){
titolo = "Stai per prenotare un posto nel settore 1 Gradinata";
settore = "1G";
return 1;
}
else return -1;
}

bo? non so + dove andare a parare....

floyd
03-05-2002, 12:30
addMouseListener(new MouseAdapter() {
public void mouseReleased(MouseEvent e) {
int x=e.getX();
int y=e.getY(); //
if (trova(x,y)>=1 && e.getClickCount() >= 2 ) {
ordina = new OrdinaPosti();
ordina.show();
}
}
});

leorsid@
09-05-2002, 11:30
Sono riuscito a risolvere questo bug che mi affligeva facendo cosí:


class pannello1 extends JPanel implements MouseMotionListener {
public void paintComponent(Graphics g){
// componenti usati
.
.
.
}
{
addMouseListener(new MouseAdapter() {
public void mousePressed(MouseEvent e) {}

public void mouseClicked(MouseEvent e) {
int x=e.getX();
int y=e.getY(); //
if (trova(x,y)>=1 && (e.getClickCount() >= 2) ) {
ordina = new OrdinaPosti();
ordina.show();
}
}
});
addMouseMotionListener(this);
}

in pratica ho inserito una graffa prima di addMouseListener cosa che prima non avevo fatto
perché ora mi viene visualizzato solo una finestra di dialogo e non 3 come prima? il motivo ancora non l'ho capito ma funge!!!
:p

floyd
09-05-2002, 11:33
probabilmente perchè lo agigungevi dentro il metodo paintComponent

Loading