[英]Java System.in.read() vs Event Handler?
假设我有这样的事情:
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;
}
}
我的意思是什么时候应该使用第一个,什么时候应该使用第二个? 优缺点都有什么?
两种方法都以两种不同的方式从用户那里获取输入。
首先是从JVM的“标准输入”流中读取字符。 如果您在不重定向标准输入的情况下运行应用程序,则此流很可能来自启动JVM的“控制台窗口”。 控制台/ OS行编辑器将处理控制台窗口上的击键,直到用户键入ENTER。 发生这种情况时,会将一行字符传递到输入流,以供JVM / Java应用程序读取。
第二个是直接处理键盘事件。 但是,这仅在GUI应用程序中有效。 它只会看到直接指向应用程序窗口的键盘事件。
我的意思是什么时候应该使用第一个,什么时候应该使用第二个?
在基于控制台的控制台中使用第一个,您无需在用户按下键的实例上看到字符。
当您具有基于GUI的应用程序并且想要以交互方式从用户那里获取输入时,请使用第二个。
优缺点都有什么?
从上面看,这是不言而喻的。 但是,还有几个其他的“缺点”。
使用System.in方法:
System.in
流可能来自文件。 如果您需要确定(或尽可能确定)您正在与真实用户对话,请使用System.console()
...并检查您没有得到null
。 使用EventHandler
方法:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.