ausführen per Tasten druck

Lightning

Mitglied
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

Java:
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
 
hi, versuch mal statt
Java:
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
Java:
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
 
das Ganze würde ich dann noch in eine dauerschleife packen, sonst ist nach einer eingabe != e ende.
mal abgesehn davon, dass
Java:
.nextInt();
bei e sowieso eine Exception werfen sollte
 
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
 
Zuletzt bearbeitet:
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
 
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
 
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.
 
ich wollte es mal ausprobiern 😀.

Zurück zum Thema:
also würde der Quelltext jetz so funktionieren?
Java:
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?
 
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)
 
Häää???
Jetz kapier ich gar nichts mehr.
Ich habs so gemacht:
Java:
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?
 
Java:
	  Robot robot = new Robot();
	  Scanner eingabe = new Scanner (System.in);
	  String e = eingabe.next();
	  if (e.toLowerCase().equals("e"))
so meinte ich das
 
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?
 
@nrg
Java:
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
Code:
while(true){mach was}
- beenden kannst du diese mit einem aufruf von
Code:
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
Java:
e.toLowerCase().equals("e")
dir ist aber bewusst das es die methode equalsIgnoreCase(...) gibt oder??

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.
 
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
 

Zurück
Oben