我是Java的新手,我需要为JTextField创建一个'BufferedReader'。需要发生的是,当程序调用我的getText()
方法时,它需要等到它从Enter键事件处理程序接收输入。如果我这样做:
String input = null;
while(true) {
if(!input.equals(null)) {
break;
}
}
我得到nullpointerexception错误。我已经考虑过了,并确定由于getText()
必须将数据返回到调用它的方法,我必须像getText()
方法中的嵌套方法一样运行,这样才能运行代码来运行数据。有什么想法吗?
答案 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)