【问题标题】:How do I kick out of a running program? [duplicate]如何退出正在运行的程序? [复制]
【发布时间】:2017-06-04 18:28:36
【问题描述】:

如何将变量分配给 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 分配给转义键。让我知道您是否有任何想法?这将是天文数字的赞赏。 ;-) ... :-)

【问题讨论】:

  • 并且所有必要的导入都已完成,只是为了避免妨碍...
  • 就是这样,谢谢@baao 我的天文数字感谢你!即使你没有得到实物奖杯,也没有用这个帖子谢谢。 :_-)

标签: java bluej


【解决方案1】:

很遗憾,你不能。

ESC 无法被Scanner 读取。您应该通过 UI 库(例如 Swing)使用键侦听器。看看"How to write a key listener?"

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

【讨论】:

    【解决方案2】:

    我用了好久的库,如果你能用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());
        }
    }
    

    【讨论】:

    • 什么@S.Nary...?
    • 第一个覆盖到第二个覆盖做什么,这对我来说是全新的?
    • 这是接口 NativeKeyListener 中方法的实现,所以你必须下载 jar,然后像任何 jar 或依赖项一样在你的项目中使用它是的,它是新的,但如果你可以正确使用它@S.Nary
    • 好的,谢谢,我试试看,@YCF_L。
    • 嘿,这些软件包可以与 BlueJ 一起使用吗?
    猜你喜欢
    • 2011-02-03
    • 1970-01-01
    • 2011-02-10
    • 2020-07-22
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 2011-08-10
    • 2020-04-05
    相关资源
    最近更新 更多