从JTextField创建'BufferedReader'

时间:2013-09-20 01:21:14

标签: java swing jtextfield

我是Java的新手,我需要为JTextField创建一个'BufferedReader'。需要发生的是,当程序调用我的getText()方法时,它需要等到它从Enter键事件处理程序接收输入。如果我这样做:

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

我得到nullpointerexception错误。我已经考虑过了,并确定由于getText()必须将数据返回到调用它的方法,我必须像getText()方法中的嵌套方法一样运行,这样才能运行代码来运行数据。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

这不是Swing(或任何UI框架)的工作方式。首先看一下Concurrecy in Swing,了解为什么你不应该阻止事件调度线程......

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

而不是使用循环或轮询,Swing使用"听众",这是Observer Pattern的一种形式。

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

请查看Writing Event Listeners了解更多示例。

如果您需要知道用户何时按 Enter ,您应该将ActionListener附加到JTextField。当用户按下 Enter

时,它将触发actionPerformed事件

有关详细信息,请参阅How to write an Action Listener

答案 1 :(得分:0)

因为输入为空。

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

"null"表示“它尚未初始化,或者没有价值”。 equals方法(以及所有其他方法)要求输入不为空。

答案 2 :(得分:0)

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

if(input != null)