私のプログラムは、単純なGUIとスレッドを拡張するクラスで構成されています。
SwingUtilities.invokeLater()を使用してGUIのテキストフィールドを更新する方法を学習しようとしていますが、静的にせずにGUIのテキストフィールドに到達するにはどうすればよいですか?そして、私は正しい方向に進んでいますか、それともこれまでに何か間違ったことをしましたか:)?
コード
これは、スレッドを拡張するクライアントと呼ばれるクラスから取得されました。これは、SwingUtilities.invokeLater(Runnable)を使用してGUIを更新する場所です。
public void run(){
while (socket.isConnected()) {
if (input.hasNext()) {
updateTextField();
}
}
}
private void updateTextField() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// here i want to update my textfield using txt.setText(input.nextLine());
}
});
}
UPDATE(これはこれまでの私のコードです)nullpointerexecptionを取得します
public void run(){
while (socket.isConnected()) {
String x = input.next();
System.out.println(x);
mg.updateChat(x); // this is the line that gives me the nullexeption
}
}
私のGUIで
public void updateChat(final String input){
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
txtChat.setText(input);
}
});
}