我有三个类 - 类1创建类2(GUI)的实例,类2实现GUI,类3尝试更新GUI。
在第1课中,我创建了这样的GUI:
s = new ServerSocket(6067);
//while(true){
Socket ClientSocket = s.accept(); // Accept connections
// Create instance of the GUI (class 2) on a new thread
work w = cpd.new work();
Thread t = new Thread(w);
t.start();
// Create instance of class 3 that uses the GUI on a new thread
Charger cpt = new ChargingPoint(ClientSocket, w.gui);
cpt.start();
//}
class work implements Runnable{
GUI gui;
public void run(){
try{
gui = new GUI();
gui.setVisible(true);
}
catch(Exception e){}
}
}
在第2课中,我实现了GUI,并提供了一些允许更新的方法,例如:
public void updateConsole(String text){
Console.append(text + "\n");
}
在第3课中,我尝试使用下面这些方法,但代码在达到如下语句时会卡住:
gui.updateConsole("Data: " + data);
在我将GUI类(第2类)作为主类之前,这对我有用。我将此实例传递给所有其他类,他们可以让我们更新GUI而不会出现任何问题。但是这次我从另一个类(类1)创建GUI,这个方法不再有效,我正在努力找出原因。
非常感谢任何建议。
答案 0 :(得分:0)
我会尝试给你自己调试的工具。
尝试使用eclipse或类似的调试器。 http://www.vogella.com/articles/EclipseDebugging/article.html
首先检查class2实际上正在回调gui类的正确实例。
使用调试器,您可以找到“对象ID”。这将告诉您内存中对象的唯一ID。它通常是内存指针。检查ChargingPoint中的id是否与Work类中创建的id匹配。在错误的类上运行方法是回调最常见的错误。
然后转到你的gui.updateConsole中的断点并进入代码。
这应该很快就能揭示出这个问题。
问候