Pessoal, gostaria de saber como faço para criar uma única janela para mostrar os resultados. Eu fiz um programa sobre Produtor e Consumidor. Utilizei a saída simples (system.out.println). Gostaria de saber como criar somente uma janela que mostre os resultados, já que estes são contínuos.
Não entendo muito dessa parte de interface gráfica. Tentei usando o JOptionPane, mas ficou uma grande bagunça. A cada processo abria uma janelinha…hehe. Gostaria de que os todos os resultados aparecessem numa mesma janela.
cria um atributo do tipo StringBuffer (caso o controle do acesso concorrente esteje bom use entao StringBuilder) e adicione as mensagens assim:
dai depois de todo o processamento e só mostrar os resultados assim:
M
Morpheus.df
Acho que não entendi muito bem. Eu tentei fazer como você falou, mas não consegui:
importjavax.swing.JOptionPane;publicclassProd_Cons{staticintbuffer[]=newint[500];staticintposicao=0;staticProdutorp1=newProdutor();staticProdutorp2=newProdutor();staticConsumidorc=newConsumidor();publicstaticvoidmain(String[]args){p1.start();p2.start();c.start();}synchronizedstaticpublicvoidinsereDadosBuffer(intdado){if(posicao==0){StringBufferstr=newStringBuffer();if(buffer[posicao]!=0){posicao++;}}else{posicao++;}buffer[posicao]=dado;str.append("Insere no buffer: "+dado+" na posicao: "+posicao);}synchronizedstaticpublicvoidremoveDadosBuffer(){StringBufferstr=newStringBuffer();str.append("remove do buffer: "+buffer[posicao]+" na posicao: "+posicao);buffer[posicao]=0;posicao--;}JOptionPane.showMessageDialog(null,str,"Produtor x Consumidor",JOptionPane.INFORMATION_MESSAGE);synchronizedstaticpublicintgetPosicao(){returnposicao;}staticclassProdutorextendsThread{publicvoidrun(){while(Prod_Cons.getPosicao()<1000){Prod_Cons.insereDadosBuffer(1);try{Thread.sleep(2000);}catch(InterruptedExceptione){e.printStackTrace();}}}}staticclassConsumidorextendsThread{publicvoidrun(){while(true){if(Prod_Cons.getPosicao()==0){try{Thread.sleep(2000);}catch(InterruptedExceptione){e.printStackTrace();}continue;}Prod_Cons.removeDadosBuffer();try{Thread.sleep(1000);}catch(InterruptedExceptione){e.printStackTrace();}}}}}
gpd38
Da uma olhada nesta classe do swing que existe algumas opções boas
import javax.swing.JTextArea;JTextArea janela = new JTextArea();String saida="";//----------------------------------------------saida = siada + " O que for mostra para o usuario ";//-----------------------------------------------janela.setText(saida);JOptionPane.showMessageDialog(null,janela,"TITULO",JOptionPane.INFORMATION_MESSAGE);