我有一个小问题 - 我有一个线程聊天客户端,我想为此创建一个警报(哔声)。只要窗口未对焦并收到消息,就会触发警报。现在我只是试图显示一条消息,无论焦点状态如何。如果这样做,我可以用Toolkit.getDefaultToolkit().beep();
替换print语句。
public class IncomingReader implements Runnable {
public void run() {
String message;
Font font = new Font("Verdana", Font.BOLD, 11);
JTarea.setFont(font);
try {
while ((message = reader.readLine()) != null) {
//checkFocus();
if (Jfrm.isFocused()) {
System.out.println("focused");
} else {
System.out.println("not focused");
}
JTarea.append(message + "\n");
}
} catch (Exception ex) {
System.out.println("errror run()");
ex.printStackTrace();
}
}
}
现在每当我这样做,或者,我创建一个具有相同代码的函数checkFocus()
,编译器给我一个
java.lang.NullPointerException
at ChatClient$IncomingReader.run(ChatClient.java:284)
at java.lang.Thread.run(Unknown Source)
我不知道为什么会发生这种情况,并希望得到任何帮助。 谢谢。
答案 0 :(得分:1)
对象Jfrm
(JFrame):
if(Jfrm.isFocused())
可能是null
。
在调用方法之前,确保你确实有一个有效的对象。