Man kann GUIs bauen mit Java – wenn man will. AWT und Swing existieren. Eigentlich ist Java aber konsolenbasiert. Um so erstaunlicher, dass es von Haus aus (immer noch) keine Möglichkeit gibt, einzelne Zeichen einzulesen, ohne nach Eingabe auf Return/Enter warten zu müssen. Das wäre aber nötig, um zB die (komfortable) Steuerung einer Konsolenanwendung mit der Tastatur zu ermöglichen. Mit dem Package JLine (speziell ConsoleReader.readCharacter) kann man das – hier die “Hello World“-Version:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
package input; import jline.ConsoleReader; public class Keylistener { private static final char NOOP = '0'; private static final char QUIT = 'q'; private static final char UP = 'w'; private static final char DOWN = 's'; private static final char LEFT = 'a'; private static final char RIGHT = 'd'; private static char[] allowed = { UP, DOWN, LEFT, RIGHT, QUIT }; public static void main( String[] args ) { char input = NOOP; try { ConsoleReader console = new ConsoleReader(); while( input!=QUIT ){ input = (char)console.readCharacter( allowed ); console.clearScreen(); switch( input ){ case UP: System.out.println( "up" ); break; case LEFT: System.out.println( "left" ); break; case DOWN: System.out.println( "down" ); break; case RIGHT: System.out.println( "right" ); break; } } } catch( Exception e ){} } } |
HTH
Verbesserungsvorschläge:
– Akzente (`´) in Apostrophe (‘) und Anführungszeichen (“)
– Zeile “package input;” – Wofür braucht man die?
Jaa, das ist ja kein Quellcode in dem Sinne, sondern nur bessere Illustration 🙂 WordPress ersetzt Anführungszeichen usw.
Das Package kann bei Dir natürlich anders heißen