0

我对 Java 还很陌生,我需要为 JTextField 创建一个“BufferedReader”。需要发生的是,当程序调用我的getText()方法时,它需要等到它收到来自 Enter 键事件处理程序的输入。如果我做类似的事情:

String input = null;
while(true) {
  if(!input.equals(null)) {
    break;
  }
}

我得到空指针异常错误。我已经考虑过了,并确定由于getText()必须将数据返回给调用它的方法,所以我必须像方法内部的嵌套方法一样运行getText(),这样才能运行代码来运行数据。有任何想法吗?

4

3 回答 3

2

这不是 Swing(或几乎任何 UI 框架)的工作方式。首先看一下Swing 中的 Concurrecy,了解为什么永远不要阻塞 Event Dispatching Thread...

Swing 是一个事件驱动的环境。用户单击鼠标,并引发事件。用户按下一个键,就会引发事件。

Swing 没有使用循环或轮询,而是使用“侦听器”,这是观察者模式的一种形式。

这允许您将回调接口附加到对象,它会告诉您何时发生了某些事情。

查看编写事件侦听器以获取更多示例。

如果您需要知道用户何时按下Enter,您应该ActionListenerJTextField. 它会在用户按下时触发一个actionPerformed事件Enter

有关详细信息,请参阅如何编写动作侦听器

于 2013-09-20T01:24:36.090 回答
0

因为,输入为空。

String input = null;
if(!input.equals(null))

"null"意思是“它还没有初始化,或者它没有价值”。equals 方法(和所有其他方法)要求输入不能为空。

于 2013-09-20T01:23:26.700 回答
0

不能在空对象上调用方法。检查输入是否为空。

if(input != null)
于 2013-09-20T01:30:13.153 回答