我有三個類 - 創建類2(GUI)的實例的類1,實現GUI的類2和嘗試更新GUI的類3。從另一個類訪問Java Swing GUI
在1 I類創建這樣的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 I類實現GUI,並有一些方法允許它被更新此如一個:
public void updateConsole(String text){
Console.append(text + "\n");
}
在第3課中,我嘗試使用下面的這些方法,但是代碼在達到如下陳述時卡住了:
gui.updateConsole("Data: " + data);
當我將GUI類(2類)作爲主類時,這已經適用於我。我將這個實例傳遞給所有其他類,他們可以讓我們更新GUI而不會有任何問題。但是,這次我從另一個類(類1)創建GUI,並且此方法不再有效,我正在努力解決原因。
任何建議將非常感激。
只是一個說明。您似乎在跟蹤回調模式。 請參閱http://en.wikipedia.org/wiki/Callback_(computer_programming) – Tinman
java約定是類應始終以大寫字母開頭。 – Tinman
錯誤是什麼?這聽起來像你不再將需要的引用傳遞給需要它們的類 – MadProgrammer