如何开始运行程序?

时间:2017-06-04 18:28:36

标签: java bluej

如何为ESC分配变量。键,以便在按下时程序关闭? 我正在做一个计算器,我见过的唯一方法就是直接做:

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

我不知道是否可以为逃生键分配,例如-1。如果您有任何想法,请告诉我?这将受到天文数字的赞赏。 ;-) ...: - )

2 个答案:

答案 0 :(得分:2)

不幸的是,你不能。

Scanner无法读取

ESC 。您应该使用UI库的键监听器(例如,Swing)。看看"How to write a key listener?"

在这种情况下,你应该向用户索要一个数字,这是循环中断的关键(就像你实际做的那样)。

答案 1 :(得分:1)

很长一段时间我使用了一个好的库,所以如果你可以使用JNativeHook库,你可以很容易地解决这个问题。

以下是一个例子:

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());
    }
}