Criar uma janela única

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:

Acho que não entendi muito bem. Eu tentei fazer como você falou, mas não consegui:

[code]import javax.swing.JOptionPane;

public class Prod_Cons {
static int buffer[] = new int[500];
static int posicao = 0;
static Produtor p1 = new Produtor();
static Produtor p2 = new Produtor();
static Consumidor c = new Consumidor();

public static void main(String[] args) {
	p1.start();
	p2.start();
	c.start();
}

synchronized static public void insereDadosBuffer(int dado){
   if(posicao == 0){
   	StringBuffer str = new StringBuffer();
	   if(buffer[posicao] != 0){
	     posicao++;
	   }
   }else{
	   posicao++;
   }
   buffer[posicao] = dado;
   str.append("Insere no buffer: " + dado + " na posicao: " + posicao);
   
}

synchronized static public void removeDadosBuffer(){
	StringBuffer str = new StringBuffer();
	str.append("remove do buffer: " + buffer[posicao] + " na posicao: " + posicao);
	buffer[posicao] = 0;
	posicao--;
}

JOptionPane.showMessageDialog(null, str, "Produtor x Consumidor", JOptionPane.INFORMATION_MESSAGE);

synchronized static public int getPosicao(){
	return posicao;
}

static class Produtor extends Thread {
public void run(){
while(Prod_Cons.getPosicao() < 1000){
Prod_Cons.insereDadosBuffer(1);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

}

static class Consumidor extends Thread{
public void run(){
while(true){
if(Prod_Cons.getPosicao() == 0){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
continue;
}
Prod_Cons.removeDadosBuffer();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}

}
}[/code]

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);

Espero que goste.