2016-05-02 11 views
0

In Java muss ich einen Maus-Listener integrieren, der einen Motor bewegt. Aber hier ist der Haken, es gibt keine Stoppfunktion. Dabei sollte der mousepressed den Motor bewegen, während der mouseReleased ihn anhalten sollte, ohne tatsächlich einen stop-Befehl zu senden, sondern indem der gedrückte Mausblock angehalten wird. Irgendwelche Ideen, wie dies umgesetzt werden kann? Und ist es möglich, den Befehl unter mousePressed zu wiederholen, solange die Maus gedrückt wird? Der folgende Code soll mein aktuelles Programm veranschaulichen, das eine Stoppfunktion verwendet, die ich lieber vermeiden möchte.Maus-Listener, der die Ausführung eines Blocks stoppt, wenn die Maus losgelassen wird

n2Button.addMouseListener(new MouseAdapter() { 
     public void mousePressed(MouseEvent e) { 
      if ((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0) { 
       try { 
        //      moveUp(); 
        session.motion(0, 0, -500); 
       } catch (IOException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 
      } 
     } 

     public void mouseReleased(MouseEvent e) { 
      if ((e.getModifiers() & InputEvent.BUTTON1_MASK) != 0) { 
       try { 
        session.stop(); 
       } catch (IOException e1) { 
        // TODO Auto-generated catch block 
        e1.printStackTrace(); 
       } 
      } 
     } 
    }); 

Antwort

0

Sie wollen eher Mausbewegung Zuhörer [Beispiel] [1] [1] haben: https://docs.oracle.com/javase/tutorial/uiswing/events/mousemotionlistener.html Und ich sehe auch nicht das Problem session.stop zu haben(); nur die Bewegungsfunktion muss in einem anderen Thread ausgeführt werden

+0

Leider gibt es in meinem Fall keine Stoppfunktion (kann nicht implementiert werden). Das obige Snippet wurde mit einer früheren Version eines Motors verwendet, der sich bewegen würde (Geschwindigkeit als Parameter nehmen), bis er einen Stoppbefehl erhalten würde. In dieser neuen Version bewegt es sich z. 0,001 mm jedes Mal, wenn Sie es befehlen, und es gibt keine Stoppfunktion. Ich glaube nicht, dass Motion Listener mir trotzdem helfen würde. Ich möchte es mit einem Actionlistener implementieren. –

+0

Solange ich die Taste drücke, möchte ich den 0.001mm-Befehl verschieben und sobald ich ihn loslasse, um den Befehl zu beenden. Irgendwelche Ideen? –

+0

Maus gezogen ist, was Sie brauchen. 'öffentliche void mouseDragged (MouseEvent e) { saySomething ("Maus gezogen", e); } Hohlraum saySomething (String eventdescription, Mouse e) { textArea.append (eventdescription + "(" + e.getX() + "" + e.getY() + ")" + "erkannt on " + e.getComponent(). GetClass(). GetName() + newline); } ' –

Verwandte Themen