2014-03-28 62 views
0

我有4個類,一個GUImain(觀察者),一個主題,2個類實現Runnable。 主題類啓動2個線程,它們在實現Runnable的類中編碼。 線程1 - 應訪問Arraylist的每個訂單,將訂單發送到主題類,然後通知觀察者附加到TextArea。hot得到線程結果到TextArea

請告訴這是如何實現的..

關於到目前爲止實施更多的細節:

GUIMain類:JTextArea中(要裝滿從一個ArrayList的訂單)

廚房類:Thread run()在這裏實現: - 從OrderList獲取每個訂單(從輸入文件中讀取25個訂單的列表) - 將其發送到主題類 - 以便GUIMain(觀察者)可以自行更新。 - JTextArea應該一次只附加幾個命令。

public class Kitchen implements Runnable{ 
private Restaurant R; 
private OrderList Orders; 
public Kitchen() 
{ 
Orders = new OrderList(); 
} 
private String getOrderReport() 
{ 
String report=" "; 
report = Orders.OrderDetailsReport(); 
return report; 
} 
@Override 
public void run() { 
System.out.println("inside kitchen thread"); 
String report=" "; 
try 
{ 
Thread.sleep(100); 
} 
catch (Exception e) { 
System.out.println("Kitchen thread exception" + e.getStackTrace()); 
} 
System.out.println(getOrderReport()); 
System.out.println("size of OL from kitchen thraed:"+Orders.getListSize()); 
System.out.println(R.getListOfOrders()); 
} 
} 
output: 
Exception in thread "Thread-3" java.lang.NullPointerException 
    at REST.Kitchen.run(Kitchen.java:41) 
    at java.lang.Thread.run(Thread.java:724) 
+0

請給我們更多詳細信息,包括您到目前爲止所做的,您嘗試過的, '被卡住了......正如你寫的,你的問題非常廣泛,也許過於寬泛,使我很難回答。另外,這是一個Swing GUI問題嗎?你在使用JTextAreas而不是TextAreas嗎? –

+0

:)感謝一噸的快速反應!我想展示我迄今爲止所做的工作,但大約有10-12個班。我怎麼發送給你? – user3473791

+0

你想要做的是提取關鍵代碼並將其發佈到此處。實際上,您應該考慮創建併發布[最小示例程序](http://stackoverflow.com/help/mcve)。請記住,我們都是您要求免費諮詢的志願者,我們沒有時間去查看10-12個等級的代碼。 –

回答

0

沒有您的設置細節很難說。這聽起來像你接近模型/視圖/控制器設置,但你沒有一個統一的模型。

通常,視圖/渲染線程(您的GUIMain)也是一個單獨的線程,它會檢查模型(聽起來像是可運行類的組合)並自行更新。

簡單的解決方案是讓GUIMain在構造函數中接受可運行類的另一個線程。然後它將極化可運行的類並根據需要更新文本區域...

PS。請確保在所有線程中包含Thread.sleep()一段時間,否則將需要大量內存來運行

+0

感謝您的建議..我試過了,現在有點工作了。 – user3473791

+0

很高興我能幫到你。請檢查我的答案驗證...我必須增加我的代表,以便我可以發表評論:-) – ForteDevelop