AWT Wie bekomme ich einen zeitgesteuerten robot hin?

Gamo4K

Mitglied
ich möchte ein programm machen, dass jede sekunde einen mausklick simuliert bis jetzt habe ich das schon probiert und bekomme keine fehler angezeigt.
Java:
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;

import javax.swing.*;


public class mausklick {
    
    static Robot roboter;
    static Timer tm;
    static boolean started = false;
    
    public static void main(String[] args) throws AWTException  {
        
        tm = new Timer(1000, new actionListener());
        roboter = new Robot();
        maus();
        
    }
    private static void maus() {
        if (started == true) {
            roboter.mousePress(InputEvent.BUTTON1_DOWN_MASK);
            roboter.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);    
        } else {
            tm.start();
        }
    }
    private static class actionListener implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            started = true;
            maus();
        }
        
    }
}
 
Zuletzt bearbeitet von einem Moderator:
Naja ich habe halt den oben gezeigten code in eclipse eingegeben und bekomme dort keine fehler angezeigt. Jedoch scheint der Timer nicht richtig zu funktionieren, denn das programm macht einfach gar nichts.
 
Der erste Schritt im Debuggen wäre zu prüfen, ob der Timer überhaupt gestartet wird und ob er im richtigen Zeitintervall seine Aufgabe erfüllt.
Auch wenn es naheliegend sein mag, dass er funktioniert muss sowas überprüft werden.
Der nächste Schritt wäre dann zu überprüfen, ob und wo geklickt wird.
Dazu platzierst du einfach an den passenden Koordinaten eine klickbare Schaltfläche und spätestens da fällt dir auf, dass die Koordinaten fehlen, wie Tom gesagt hat. Vermutlich werden Standartkoordinaten (0|0)? verwendet.
Ich will dich nicht bloßstellen, sondern dir das Debugging erklären. 😉
 
Wenn man die Maus selbst bewegen will und nur einen "Klickbot" benötigt, dann braucht man keine Koordinaten.
 
Du hast den falschen Timer benutzt, swing.Timer ist nicht richtig. Ich hab dir das mal bischen umgeschrieben:

Java:
package de.test;

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.event.InputEvent;
import java.util.Timer;
import java.util.TimerTask;


public class RobotDemo {

	public static void main(String[] args) {
		Roboter robbi = new Roboter();
		robbi.startRoboter();
    }
}

class Roboter extends TimerTask {
	private Robot roboter;
	private Timer tm;
	private int maxCount = 10;
	private int count = 0;
	
	
	public Roboter() {
        try {
			roboter = new Robot();
		} 
        catch (AWTException e) {
			e.printStackTrace();
		}		
	}
	
	public void startRoboter () {
		count = 0;
		tm = new Timer();
		tm.schedule(this, 0, 1000);
	}
	
	@Override
	public void run() {
		count++;
        roboter.mousePress(InputEvent.BUTTON1_DOWN_MASK);
        System.out.println("Press");
        roboter.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
        System.out.println("Release");	
        if (count == maxCount) {
        	tm.cancel();
        }
	}
}
 
Zuletzt bearbeitet von einem Moderator:

Neue Themen


Zurück
Oben