2014-03-28 27 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