problem mit robot

Status
Nicht offen für weitere Antworten.

waldek87

Mitglied
hallo,

ich hab ein kleines problem mit robot, wo ich einfach nicht weiterkomme bzw. nicht die lösung dazu finde.
ich muss eine andere java anwendung steuern, dessen code ich leider nicht habe. deswegen will ich die einzelnen felder etc. mit robot klicks, und tastatur eingaben steuern.

mein problem hierbei ist, er schreibt bloß das 2. wort in das jtextfield (im code wäre das "krankenhaus"). er durchläuft die funktion auch beim ersten aufruf, aber das jtextfield bleibt leider leer :-(

ich hab es auch schon mit verschiedenen delay längen von 0,05 - 10 sekunden probiert, nichts half.

erstmal der code:

Code:
	private void trageTestDatenEin()
	{

		robot.mouseMove(280, 120);
		robot.mousePress(InputEvent.BUTTON1_MASK);
		robot.mouseRelease(InputEvent.BUTTON1_MASK);

		schreibeWort("Flughafen");
		robot.mousePress(InputEvent.BUTTON1_MASK);
		
		robot.mouseMove(280, 170);
		robot.mousePress(InputEvent.BUTTON1_MASK);
		robot.delay(5);
		robot.mouseRelease(InputEvent.BUTTON1_MASK);
		schreibeWort("Krankenhaus");
	}

	private void schreibeWort(String wort)
	{
		for (int i = 0; i < wort.length(); i++)
		{
			char c = wort.charAt(i);
			int code = Character.toUpperCase(c);
			if (Character.isUpperCase(c))
			{
				robot.keyPress(KeyEvent.VK_SHIFT);
				robot.keyPress(code);
				robot.keyRelease(code);
				robot.keyRelease(KeyEvent.VK_SHIFT);
			}
			else
			{
				robot.keyPress(code);
				robot.keyRelease(code);
			}
		}
	}

weiß einer den fehler?

mfg
 
Code:
private void trageTestDatenEin(EingabeFahrt fahrt)
	{
		robot.mouseMove(280, 120);
		robot.mousePress(InputEvent.BUTTON1_MASK);
		robot.mouseRelease(InputEvent.BUTTON1_MASK);
		schreibeWort(fahrt.getStartOrt());
		
		robot.mouseMove(280, 170);
		robot.mousePress(InputEvent.BUTTON1_MASK);
		robot.mouseRelease(InputEvent.BUTTON1_MASK);
		schreibeWort(fahrt.getZielOrt());
	}
	
	private void schreibeWort(String wort)
	{
		for (int i = 0; i < wort.length(); i++)
		{
			char c = wort.charAt(i);
			int code = Character.toUpperCase(c);
			if (Character.isUpperCase(c))
			{
				robot.keyPress(KeyEvent.VK_SHIFT);
				robot.keyPress(code);
				robot.keyRelease(code);
				robot.keyRelease(KeyEvent.VK_SHIFT);
			}
			else
			{
				robot.keyPress(code);
				robot.keyRelease(code);
			}
		}
		System.out.println(wort+" wurde geschrieben   "+System.currentTimeMillis());
		
	}

so siehts jetzt aus, aber immer noch das gleiche ):

in der konsole steht zwar die ausgabe, aber in dem jtextfield fehlt immer noch die ausgabe.
 
würde es vllt was bezwecken, wenn ich pro textfeld einen thread starte, wo dann etwas reingeschrieben wird? vllt ist ja der robot zu schnell in der arbeitsweise und überspringt so ein textfeld.
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben