2017-06-04 1 views
0

Comment attribuer une variable à l'ESC. clé de sorte que quand il est pressé le programme est arrêté? que je fais une calculatrice et la seule façon que je l'ai vu fait directement comme:Comment sortir d'un programme en cours?

Scanner console = new Scanner(System.in); 
int x = 1; 
while(x==1) 
{... 
System.out.println("Enter in -1 to exit program"); 
x = nextInt(); 
} 

Je ne sais pas s'il est possible d'attribuer, par dire un -1 à la touche d'échappement. Faites-moi savoir si vous avez des idées? Ce serait astronomiquement apprécié. ;-) ... :-)

+0

et toutes les importations nécessaires ont été faites, juste pour le faire sortir de la route ... –

+0

Voilà, merci @baao mes remerciements astronomiques vont à vous !! Même si vous n'obtenez pas de trophée physique, et il n'y a aucune utilité à ce poste merci. : _-) –

Répondre

2

Malheureusement, vous ne pouvez pas.

ESC ne peut pas être lu par le Scanner. Vous êtes censé utiliser un écouteur de clé par une bibliothèque d'interface utilisateur (par exemple, Swing). Jetez un oeil à "How to write a key listener?".

Dans ce cas, vous devriez demander un numéro à un utilisateur qui est une clé de la boucle (comme vous l'avez fait).

1

Il ya longtemps que j'ai utilisé une bonne bibliothèque, donc si vous pouvez utiliser la bibliothèque JNativeHook, vous pouvez facilement résoudre ce problème.

Voici un exemple:

import org.jnativehook.GlobalScreen; 
import org.jnativehook.NativeHookException; 
import org.jnativehook.keyboard.NativeKeyEvent; 
import org.jnativehook.keyboard.NativeKeyListener; 

public class TestEscKey implements NativeKeyListener{ 

    @Override 
    public void nativeKeyPressed(NativeKeyEvent nke) { 
     if(NativeKeyEvent.getKeyText(nke.getKeyCode()).equals("Echap")){ 
      System.out.println("I will exit!"); 
      System.exit(0); 
     }else{ 
      //do another thing 
     } 
    } 

    @Override 
    public void nativeKeyReleased(NativeKeyEvent nke) { 
    } 

    @Override 
    public void nativeKeyTyped(NativeKeyEvent nke) { 
    } 

    public static void main(String[] args) throws NativeHookException { 
     try { 

      GlobalScreen.registerNativeHook(); 
     } catch (NativeHookException ex) { 
      System.out.println("There was a problem registering the native hook.\n" 
           + ex.getMessage()); 
      System.exit(1); 
     } 
     GlobalScreen.getInstance().addNativeKeyListener(new TestEscKey()); 
    } 
} 
+0

ce que @ S.Nary ...? –

+0

Que fait le 1er override à travers le 2nd override, c'est tout nouveau pour moi? –

+0

c'est l'implémentation des méthodes dans l'interface 'NativeKeyListener' donc vous devez télécharger le fichier jar, puis l'utiliser dans votre projet comme n'importe quel jar ou dépendances oui c'est nouveau mais ça fait l'affaire si vous pouvez l'utiliser correctement .Nary –