【问题标题】:How do I use the KeyListener interface?如何使用 KeyListener 接口?
【发布时间】:2012-06-25 02:34:03
【问题描述】:

我刚刚开始使用KeyListener 接口。我想创建一个非常简单的控制台应用程序。如果我按“ENTER”键,我希望程序打印“hi”。不幸的是,由于我缺乏知识,当我按下键盘上的回车键时,什么也没有发生。我没有使用 Scanner 类,因为它要求用户输入某些内容,或者只需按 Enter 即可执行某些内容。我希望一个过程继续进行,直到它被按键中断。到目前为止,我的代码如下所示:

import java.awt.event.KeyListener;
import java.awt.event.KeyEvent;

public class Trash implements KeyListener {
   public void keyPressed(KeyEvent e){
      System.out.println("hi");
      switch (e.getKeyCode()) {
         case KeyEvent.VK_ENTER:
            System.out.println("hi");
      }
   }

   public void keyTyped(KeyEvent e){}

   public void keyReleased(KeyEvent e){}

   public static void main (String [] args){
      Trash obj1 = new Trash();
   }
}

【问题讨论】:

    标签: java listener keypress keylistener keyevent


    【解决方案1】:

    KeyListener 只能添加到 GUI 组件中。它不能在控制台应用程序中使用。这就是为什么它位于 java.awt 子包中的原因。 AWT = Abstract Window Toolkit,Java 的基本 GUI 工具包。

    如果您想在控制台中按下 enter 时中断“进程”,您应该为您的进程使用一个线程,另一个线程从标准输入读取并在输入某些内容时中断另一个线程。

    【讨论】:

    • 阅读有关并发的 Java 教程,尤其是以下页面:docs.oracle.com/javase/tutorial/essential/concurrency/…
    • 谢谢,但是如何将中断与按钮按下联系起来?
    • System.in.read(); processingThread.interrupt(); System.in.read() 阻塞,直到在控制台中按下 Enter。
    • 似乎 System.in.read() 只检查用户是否输入了一次,我想要一种可以连续检查或可以多次调用的方法。
    猜你喜欢
    • 2012-06-08
    • 2023-03-15
    • 2018-12-28
    • 2013-04-26
    • 1970-01-01
    • 2021-05-19
    相关资源
    最近更新 更多