当前位置: 首页 > 知识库问答 >
问题:

Java系统。在里面read()与事件处理程序?

唐焕
2023-03-14

假设我有这样的东西:

 x= (char) System.in.read();

     if(x == 'a') {
        // Do something;
     }

它与以下内容有多大不同:

public void handle(KeyEvent event) {
        switch (event.getCode()) {
            case A: // Do something;
            case ENTER: // Do something else;
        }
    }

我是说什么时候我应该用第一个,什么时候用第二个?利与弊是什么?

共有1个答案

景麒
2023-03-14

这两种方法以两种不同的方式从用户那里获取输入。

首先是从JVM的“标准输入”流中读取字符。如果您运行应用程序时没有重定向标准输入,则此流可能来自启动JVM的“控制台窗口”。控制台窗口上的击键由控制台/操作系统行编辑器处理,直到用户键入ENTER。当这种情况发生时,一行字符被传递到输入流,准备由JVM/Java应用程序读取。

第二种是直接处理键盘事件。但是,这仅适用于GUI应用程序。它只看到指向应用程序窗口的键盘事件。

我是说什么时候我应该用第一个,什么时候用第二个?

在基于控制台的环境中使用第一种方法,在用户按键的情况下,不需要看到字符。

如果您有一个基于GUI的应用程序,并且希望以交互方式从用户处获取输入,请使用第二种方法。

利弊是什么?

从上面看,这是不言而喻的。然而,还有几个额外的“缺点”。

>

  • 使用System.in方法:

    • 系统。在中,流可能来自文件。如果您需要确定(或尽可能确定)您正在与真实用户交谈,请使用System。控制台()。。。并检查您没有得到null

    使用EventHandler方法:

    • 这在“无头”系统上不起作用
    • 它在Java方面也很重要。Java端需要处理向上键/向下键事件、回音、行编辑、结束等等。如果您正在拦截代码中的事件,那么很可能是您的代码承担了繁重的任务
    • 我认为没有办法不用启动窗口就可以使用它。(否则,最终用户将无法知道他/她正在键入的字符的“输入焦点”在哪里。)

  •  类似资料:
    • 事件 事件,就是文档与浏览器发生特定的 交互瞬间。JavaScript与HTML之间的交互就是通过事件实现的。 事件流 所谓事件流,就是接收页面事件的顺序。 事件流分 事件冒泡流 与 事件捕获流。事件冒泡流是IE开发团队提出的,捕获流是Netscape开发团队提出的。 事件冒泡流 所谓事件冒泡,就是事件开始时由 最具体的元素(文档中嵌套最深的那个 节点)接收,然后逐级向上传播到较为不具体的节点(文

    • 事务的概念 事务的概念来自于两个独立的需求:并发数据库访问,系统错误恢复。 一个事务是可以被看作一个单元的一系列SQL语句的集合。 事务的特性(ACID) A, atomacity 原子性 事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。通常,与某个事务关联的操作具有共同的目标,并且是相互依赖的。如果系统只执行这些操作的一个子集,则可能会破坏事务的总体目标。原子性消除了系统处

    • 我已经在JList上有一个这样的自定义控件库 但是我希望Jlist有滚动条,所以我将自定义控件的超类更改为JScrollPane并将JList添加到其中。像这样的代码 好吧,如果MyClass扩展了JList,在JFrame中我可以将MouseListener添加到MyClass对象中,在mouseClick中我比较MouseEvent getSource是MyClass的一个实例并调用MyCla

    • 简介 Laravel 的事件提供了一个简单的观察者实现,能够订阅和监听应用中发生的各种事件。事件类保存在 app/Events 目录中,而这些事件的的监听器则被保存在 app/Listeners 目录下。这些目录只有当你使用 Artisan 命令来生成事件和监听器时才会被自动创建。 事件机制是一种很好的应用解耦方式,因为一个事件可以拥有多个互不依赖的监听器。例如,如果你希望每次订单发货时向用户发送

    • 事件机制是一种很好的应用解耦方式。CatLib事件系统让我们可以订阅和监听程序中出现的各种事件。 应用程序已经默认提供了事件系统,供给全局事件使用。如果您要定义私有范围的事件可以这么做: var dispatcher = new EventDispatcher(); 名词定义 载荷是指程序调用所附带的上下文信息。不同的调用者所提供的上下文信息各不相同。 注册普通监听器 通过 AddListene

    • 本文向大家介绍JS事件流与事件处理程序实例分析,包括了JS事件流与事件处理程序实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了JS事件流与事件处理程序。分享给大家供大家参考,具体如下: 1.事件流:从页面中接收事件的顺序 1.1 IE :事件冒泡流 1.2 Netscape :事件捕获 1.3 DOM事件流 :事件捕获阶段——事件目标阶段——事件冒泡阶段 DOM2级事件规定 :捕获