私は小さな質問があります - 私は警告(ビープ音)を作りたいと思うスレッドチャットクライアントがあります。ウインドウがフォーカスされておらず、メッセージが受信されると、警告がトリガされます。今は、フォーカス状態に関係なく、メッセージを表示しようとしています。これがうまくいけば、print文をToolkit.getDefaultToolkit().beep();
に置き換えることができます。スレッド内でisFocused()を使用中にエラーが発生しましたか?
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)
を与えています与えられた助けを感謝するでしょう。おかげさまで
ChatClient.javaの284行目は何ですか?これはおそらくnullオブジェクトのメソッドを呼び出す場所です。また、バックグラウンドスレッドでSwingコンポーネントを使用することはできません。すべてのSwingコンポーネントは、EDTからアクセスする必要があります。 http://docs.oracle.com/javase/6/docs/api/javax/swing/package-summary.html#threading –
コードで参照されている変数の1つがnullです。最良の方法は、デバッガを使ってどのデバッガを見つけるかです。 – Perception
284行はif文で、check isFocused()です。提案のおかげで、私はそれを知っていませんでした。それは変更されます。 run()メソッド。 Thnks – Nikhar