MouseListener uitschakelen

Status
Niet open voor verdere reacties.

frankm96

Nieuwe gebruiker
Lid geworden
10 apr 2012
Berichten
1
Hallo allemaal,
Ik heb een vraag over Java. Ik wil dat een stukje code na een vaste wachttijd wordt uitgevoerd, maar tijdens die wachttijd wil ik dat mijn MouseListener tijdelijk wordt uitgeschakeld.
Wat ik nu heb is dat als ik klik tijdens de wachttijd, dat mijn MouseListener na die wachttijd wordt getriggered, maar ik wil dat die helemaal niet wordt getriggered in zo'n geval.
Hieronder staat de code die ik hiervoor wil gebruiken. Weet iemand toevallig wat ik verkeerd doe? Is de hele opzet verkeerd, of zit de fout in een paar regels code?
Code:
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class delaytest extends Applet implements MouseListener {
    int x, y;
    public  void init() {
        addMouseListener(this);
    }
    public void paint( Graphics g ) {
        g.drawOval(x, y, 20, 20);
        wacht();
    }
    public void wacht() {
        try {
            removeMouseListener(this);
            Thread.sleep(1000);
            //code die na wachttijd van 1 s moet worden uitgevoerd
            addMouseListener(this);
        }
        catch(InterruptedException ie) {}
    }
    
    public void mousePressed ( MouseEvent e ) {    
        x = e.getX();
        y = e.getY();
        repaint();
    }
    public void mouseReleased ( MouseEvent e ) {}
    public void mouseEntered ( MouseEvent e ) {}
    public void mouseExited ( MouseEvent e ) {}
    public void mouseClicked ( MouseEvent e ) {}
}
Alvast bedankt voor het helpen;)
 
Ik ben geen java (SE) specialist, dus mogelijk heb ik een aantal zaken fout.

Het niet hebben van een mouselistener maakt niet uit. De reden dat het wordt uitgesteld is de sleep. Als je alleen de SLEEP laat staan gebeurt er volgens mij hetzelfde.

De mouselistener kun je uitbreiden met eigen functionaliteit, maar het verwijderd niet de basis functionaliteit. Wat je wel kan doen is een timer toevoegen en de mouseclicks weggooien als de timer loopt.

Als je addmouselistener weglaat, veranderd er dan überhaupt iets aan de uitvoering?
 
Als ik heel eerlijk mag zijn zou ik het gebruik van een thread in jou geval afraden.
Het brengt meer risico's met zich mee dan je lief is, en je code lijkt het ook niet echt te vereisen.

Afgezien daarvan kan je natuurlijk een simpele boolean switchen in plaats van je MouseListener weg te halen,
en vervolgens elke keer weer toe te voegen. Alleen als wat je wil actief is zet je een boolean om (listenToMouse o.i.d.).
Vervolgens check je in je (MousePressed?) of deze boolean is omgezet!

Hopelijk kan je hier wat mee?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan