# ausführen per Tasten druck



## Lightning (31. Jan 2010)

Hallo,
1. hallo erstmal zusammen^^.
2. Ich hab erst mit Java angefangen.
3. Ich möchte, wenn ich die Taste "e" drücke (auf der Tastatur) das ein Tastendruck (Leertaste) solange geht bis ich noch einmal auf "e" drücke.
Müsste doch mit einer "while" schleife gehen oder?
Ich hab jetz mal des gemacht: funzt 6 mal (fürn Anfang) aber reagiert auf jede Taste + Enter


```
import java.util.*;
import java.awt.event.KeyEvent;
import java.awt.AWTException;
import java.awt.Robot;
public class Tastendrücken {
public static void main(String[] args) throws AWTException {
    Scanner eingabe = new Scanner (System.in);
Robot robot = new Robot();
char Buchstabe = (char) eingabe.nextInt();
if (Buchstabe == 65);
for (int i=0; i<10; i++) {
robot.delay(500);
robot.keyPress(KeyEvent.VK_SPACE);


}
}
}
```


Und jetz noch ne kleine Frage am Rande:
Ich arbeite zur Zeit mit NetBeans aber es gibt doch noch Eclipse.
Welches von beiden wär empfehlenswerter?



Lightning


----------



## nickname (31. Jan 2010)

hi, versuch mal statt

```
char Buchstabe = (char) eingabe.nextInt();
if (Buchstabe == 65);
for (int i=0; i<10; i++) {
robot.delay(500);
robot.keyPress(KeyEvent.VK_SPACE);
 
 
}
}
```
so etwas

```
char Buchstabe = (char) eingabe.nextInt();
if (Buchstabe == 65) // das ";" muss weg, sonst hat if keine Funktion
{
for (int i=0; i<10; i++) {
robot.delay(500);
robot.keyPress(KeyEvent.VK_SPACE);
 }
 
}
}
```

Ich persönlich ziehe eclipse vor...

gruß nickname


----------



## nrg (31. Jan 2010)

das Ganze würde ich dann noch in eine dauerschleife packen, sonst ist nach einer eingabe != e ende. 
mal abgesehn davon, dass

```
.nextInt();
```
bei e sowieso eine Exception werfen sollte


----------



## Lightning (31. Jan 2010)

Danke für die Antwort .
War ich ja gar nich so schlecht.

Also wenn ich jetz den Code in .jar umwandle geht des dann mit der Taste e?
Ich kanns nich ausprobieren weil bei mir des umwandeln irgendwie nich funzt.
Kommt immer die Meldung:   Could not find the Main Class
                                         Dann der Pfad von der Datei. Programm will exit.





Lightning


----------



## Lightning (31. Jan 2010)

Danke für die Antwort.

Wie mach ich ne Dauerschleife .


Lightning


----------



## nrg (31. Jan 2010)

dann hast du dich imho vertippt.

mit cd xxx zum Verzeichnis navigieren, worin die .java liegt.
Path Variable auf *jdk\bin setzen
javac Dateiname.java
java Tastendrücken
(nachdem ich nie mit Umlauten deklariere, weiß ich nicht in wiefern das beeinflussend ist. Würde die Klasse auf jedenfall Tastendruecken nennen!)

grüße
nrg


----------



## Lightning (31. Jan 2010)

mit cd xxx hab ich gemacht. Dann steht immer der Pfad vor der Eingabe.
Path Variable hab ich auch gesetzt:
C:\Program Files (x86)\Java\jdk1.6.0_17\bin
mit javac erstellt man doch eine class datei?!.
und mit java führt man die class datei aus.
Aber wie geht das mit .jar (per Doppelklick ausführen?)
ich hab mir das tut. durchgelesen: 
Jar - Erstellen einer ausführbaren Jar-Datei - Wiklet

Geht aber immer noch nich. Immer noch der selbe Error wie vorhin.

Lightning


----------



## nrg (31. Jan 2010)

Ich arbeite mit Ecplise und da kann man es als Jar exporten. Bei NetBeans sollte das auch gehn (und über Kommandozeile auch) aber ich versteh grad nicht warum du einen Code, der nicht funktioniert bzw noch lange nicht das macht was er machen soll in eine Jar packen willst.


----------



## Lightning (31. Jan 2010)

ich wollte es mal ausprobiern .

Zurück zum Thema:
also würde der Quelltext jetz so funktionieren?

```
import java.util.*;
import java.awt.event.KeyEvent;
import java.awt.AWTException;
import java.awt.Robot;
public class Tastendruecken {
public static void main(String[] args) throws AWTException {
    Scanner eingabe = new Scanner (System.in);
Robot robot = new Robot();
char Buchstabe = (char) eingabe.nextInt();
if (Buchstabe == 65)
for (int i=0; i<10; i++) {
robot.delay(500);
robot.keyPress(KeyEvent.VK_SPACE);


}
}
}
```

Wenn ich jetz 65 eingebe und Enter drücke funktioniert es.
Aber wie schaff ich das das es auf E geht?


----------



## nrg (31. Jan 2010)

ja das meinte ich. würde es mit .next() machen, in einen String schreiben und mit .equals("e") abprüfen. (falls du groß- und kleinschreibung ermöglichen willst, noch .toLowerCase einbauen)


----------



## Lightning (31. Jan 2010)

Häää???
Jetz kapier ich gar nichts mehr.
Ich habs so gemacht:

```
import java.util.*;
import java.awt.event.KeyEvent;
import java.awt.AWTException;
import java.awt.Robot;
public class Tastendruecken {
public static void main(String[] args) throws AWTException {
    Scanner eingabe = new Scanner (System.in);
Robot robot = new Robot();
String e = new String("e");
char Buchstabe = (char) eingabe.next();
if (Buchstabe.equals(e))
for (int i=0; i<10; i++) {
robot.delay(500);
robot.keyPress(KeyEvent.VK_SPACE);


}
}
}
```

wird aber rot unterstrichen. (equals)
Was soll ich nach next. einsetzen?


----------



## nrg (31. Jan 2010)

```
Robot robot = new Robot();
	  Scanner eingabe = new Scanner (System.in);
	  String e = eingabe.next();
	  if (e.toLowerCase().equals("e"))
```
so meinte ich das


----------



## Lightning (31. Jan 2010)

Danke.
Jetz gehts.
Aber muss man immer Enter nach dem Buchstaben drücken?
Wie macht man eine Endlosschleife?
Kann man auch die Tastatur solange "abhören" bis einer die Taste e drückt und dann fangen die Leertasten an und wenn man noch mal auf e drückt das es aufhört?


----------



## Ein Keks (31. Jan 2010)

@nrg

```
e.toLowerCase().equals("e")
```
dir ist aber bewusst das es die methode equalsIgnoreCase(...) gibt oder??

@Lightning
-die jar datei hatte vermutlich eine fehlerhafte manifest datei
-eine jar wird standartmäßig mit javaw geöffnet also ohne konsole was bedeutet, sie hätte dir eh nix gebracht
-ja man muss immer enter drücken, da das programm sonst gar keinen wind davon bekommt was du eintippst
-eine endlos schleife sind z.B. so aus 
	
	
	
	





```
while(true){mach was}
```
- beenden kannst du diese mit einem aufruf von 
	
	
	
	





```
break;
```
- zum thema beenden mit e: ma versucht ein einzelnes e einzugeben wenn die ganze zeit space gedrückt wird?^^
-eine andere variante wäre ein KeyListener der ist allerdings an ein Fenster/eine Komponente gebunden, man kann zwar mit hilfe einer dll einen "global keylistener" machen, leider hat dies bisher niemand für 64bit systeme (jedenfalls so weit ich weiß)
- ne weitere variante wäre ein fenster mit start/stop knopf aber GUI-programmierung ist glaub bei dir noch etwas zu früh (nicht böse gemeint  )


----------



## nrg (31. Jan 2010)

Ein Keks hat gesagt.:


> @nrg
> 
> ```
> e.toLowerCase().equals("e")
> ...



nein. sonst hätte ich so eine umständliche Variante empfohlen. Kommt denke aufs gleiche raus aber danke, wieder was gelernt .

zum thema: glaube, um es so zu realisieren, wie du es haben willst, musst du mit Threads arbeiten. Ich persönlich bin gerade in Threads noch alles andere als standfest.


----------



## Lightning (31. Jan 2010)

danke für die Antworten .

Wie schreibe ich den sonst eine Manifest Datei?
Ich habe sie so geschrieben:
Main-Class: C:\Users\Lightning\Desktop\JAVA\NewClass

und das enter halt nicht zu vergessen .



Lightning


----------

