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?
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?
My SO:WinXP pro/Linux Debian/Gentoo 2006.0
Il metodo getClickCount() conta il numero di pressioni e rilasci del tastino del mouse...
scusami ma
allora non dovrebbe essere corretto cosí? perché me ne apre tre di ordina?codice: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 } }
My SO:WinXP pro/Linux Debian/Gentoo 2006.0
posta il codice dell'oggetto a ciu hai aggiunto il MouseListener
in pratica ho aggiunto il mouselistener al pannellocodice: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_CURSOR)); else setCursor(Cursor.getDefaultCursor()); } }
My SO:WinXP pro/Linux Debian/Gentoo 2006.0
prova a usare mouseReleased al posto di mouseclicked
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:
bo? non so + dove andare a parare....codice: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; }
My SO:WinXP pro/Linux Debian/Gentoo 2006.0
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();
}
}
});
Sono riuscito a risolvere questo bug che mi affligeva facendo cosí:
in pratica ho inserito una graffa prima di addMouseListener cosa che prima non avevo fattocodice: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); }
perché ora mi viene visualizzato solo una finestra di dialogo e non 3 come prima? il motivo ancora non l'ho capito ma funge!!!
My SO:WinXP pro/Linux Debian/Gentoo 2006.0
probabilmente perchè lo agigungevi dentro il metodo paintComponent