ich habe einen global KeyListener und auf Tastendruck starten mein Robot. Ich schaffe es nur nicht das dieser jetzt, nachdem ich die Taste los gelassen haben, sich beendet. Hilfe ;(
Hab aber ein weiteres Problem.
Wenn ich jetzt die Leertaste drücke und gedrückt halte, während dessen dann eine andere Taste drücke und loslasse und dann die Leertaste loslasse kommt das bei mir im KeyReleased nicht an.
Also Leertaste gedrückt --> andere Taste drücken --> Leertaste loslassen.
Das ich die Leertaste loslasse kommt nicht an. Wieso ?
jup, funktioniert. Danke
Wenn ich jetzt die Leertaste drücke und gedrückt halte, während dessen dann eine andere Taste drücke und loslasse und dann die Leertaste loslasse kommt das bei mir im KeyReleased nicht an.
Weniger Klavier auf der Tastatur spielen und dafür mehr programmieren
Ändere es doch einfach ab das du nur 2 Tasten drücken musst anstatt
eine zu drücken(1), draufzubleiben, währenddessen du eine andere Taste(2) drücken musst
und dann wieder eine Taste loslässt(1). Ist doch auch nicht so Benutzerfreundlich,
auch wenn es nur für den eigenen Gebrauch programmiert ist (nehme ich an).
Sollte man eigentlich händisch in keiner Software aufrufen müssen!
Zumal es nur eine Art "Empfehlung" an das System ist und nicht unbedingt zwingend sofort ausgeführt wird !!
Hab aber ein weiteres Problem.
Wenn ich jetzt die Leertaste drücke und gedrückt halte, während dessen dann eine andere Taste drücke und loslasse und dann die Leertaste loslasse kommt das bei mir im KeyReleased nicht an.
Also Leertaste gedrückt --> andere Taste drücken --> Leertaste loslassen.
Das ich die Leertaste loslasse kommt nicht an. Wieso ?
Ahh, das war ein bisschen ungünstig formuliert
Das Problem ist, wenn der Robot in der while schleife die Tasteneingaben macht, erkennt das Programm keine eingaben mehr die ich manuell mache, egal ob ich auf die Tastatur klicke oder auf die Maus.
Java:
publicvoidnativeKeyReleased(NativeKeyEvent e)
Die Methode reagiert nur noch auf die Tastendrücke vom Robot.
Bin ein bisschen weiter
Das Programm erkennt die manuellen Eingaben. Nur kommen die stark verzögert an, da es noch die ganzen eingaben vom Robot abarbeitet.
Habs bisschen umgeschrieben und es funktioniert jetzt.
Allerdings soll jedes mal wenn der Robot eine Taste drückt, danach eine kleine Pause sein, bis er die nächste Taste drückt. Das wär super.
Thread.sleep(); ist dafür nicht geeignet. Schon probiert
Java:
publicvoidnativeKeyPressed(NativeKeyEvent e){if((e.getKeyCode()==NativeKeyEvent.VK_SPACE && spaceKey)){try{keyRobot();}catch(AWTException e1){// TODO Auto-generated catch block
e1.printStackTrace();}catch(InterruptedException e1){// TODO Auto-generated catch block
e1.printStackTrace();}}}publicvoidkeyRobot()throwsAWTException,InterruptedException{Robot r =newRobot();if(click1){
r.keyPress(KeyEvent.VK_1);
r.keyRelease(KeyEvent.VK_1);}if(click2){
r.keyPress(KeyEvent.VK_2);
r.keyRelease(KeyEvent.VK_2);}if(click3){
r.keyPress(KeyEvent.VK_3);
r.keyRelease(KeyEvent.VK_3);}if(click4){
r.keyPress(KeyEvent.VK_4);
r.keyRelease(KeyEvent.VK_4);}if(clickml){
r.mousePress(InputEvent.BUTTON1_MASK);
r.mouseRelease(InputEvent.BUTTON1_MASK);}if(clickmr){
r.mousePress(InputEvent.BUTTON2_MASK);
r.mouseRelease(InputEvent.BUTTON2_MASK);}}