我的程序由一个简单的 gui 和一个扩展线程的类组成!
我正在尝试学习如何使用 SwingUtilities.invokeLater() 以使用它来更新我的 GUI 中的文本字段,但是如何在不制作静态的情况下到达我的 gui 中的文本字段?我是在正确的轨道上还是到目前为止我做错了什么:)?
代码
这取自扩展线程的名为 Client 的类,这是我想使用 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());
}
});
}
更新(到目前为止,这是我的代码)获取空指针执行
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);
}
});
}