Como fazer para aparecer um texto na tela?

Estou desenvolvendo um pequeno jogo, e estou querendo que alguns textos apareçam na tela, ao invés de mostrar no console. Porém, não sei como. Já tentei JLabel, etc, e nada, =|, Vou estar mandando uma imagem do que eu gostaria que fosse feito (no caso do texto do console aparecer nesse espaço do ScrollPane):

[code]package jogo;

import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;

public class Arena extends JFrame {

public int aux1 = 0;
public int aux2 = 0;
JLabel label1;

JScrollPane scrollpane = new JScrollPane();

    public Arena(final JButton atk, final JButton def, final BotECA p1, final BotECA p2, final Container c) {


	final BotECA p3 = p1;
	final BotECA p4 = p2;
	
	scrollpane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
	scrollpane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
	scrollpane.setBounds(15, 15, 465, 300);
	
	c.add(scrollpane);
	
	System.out.println(p1.personagem + " versus " + p2.personagem);
	System.out.println();
	
	//codigo da luta
	p1.setDano(p1.getAtaque() - p2.getDefesa());
	p2.setDano(p2.getAtaque() - p1.getDefesa());
	
	if (p1.getDano() < 0) {
		p1.setDano(0);
	} 
	
	if (p2.getDano() < 0) {
		p2.setDano(0);
	}
	
	atk.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent e){
		atkNovoActionPerformed(e);  
	
		}

		private void atkNovoActionPerformed(ActionEvent e) {
			
			
			p3.atacar();
			System.out.println("O ataque de " + p3.personagem + " é de " + p3.getAtaque() + " pontos");
			p4.defender();
			System.out.println("A defesa de " + p4.personagem + " é de " + p4.getDefesa() + " pontos");
			System.out.println(p3.personagem + " conseguiu " + p3.getDano() + " pontos. ");
		
			System.out.println();
			aux1 = 1;
			
			if (aux2 == 1) {
				
				if (p3.getDano() > p4.getDano()) {
					
					System.out.println(p3.personagem + " venceu: ");
					p3.celebrar();
					
					System.out.println();
					
					System.out.println(p4.personagem + " perdeu: ");
					p4.perder();
					
						} else {
				
								if(p4.getDano() > p3.getDano()) {
									
									System.out.println(p4.personagem + " venceu: ");
									p4.celebrar();
									System.out.println();
									System.out.println(p3.personagem + " perdeu: ");
									p3.perder(); }
										
										} if (p4.getDano() == p3.getDano()) {
											System.out.println("A luta empatou. ");
										}}
			
			if (e.getSource().equals(atk)) {
				new Desativar(atk, def, aux1, aux2);
			}
			
		}});
	
	def.addActionListener(new ActionListener(){
		public void actionPerformed(ActionEvent e){
		defNovoActionPerformed(e);  
	
		}

		private void defNovoActionPerformed(ActionEvent e) {

			p4.atacar();
			System.out.println("O ataque de " + p4.personagem + " é de " + p4.getAtaque() + " pontos");
			p3.defender();
			System.out.println("A defesa de " + p3.personagem + " é de " + p3.getDefesa() + " pontos");
			System.out.println(p4.personagem + " conseguiu " + p4.getDano() + " pontos. ");
			
			System.out.println();
			aux2 = 1;
			
			if (aux1 == 1) {
				
				if (p3.getDano() > p4.getDano()) {
	
					System.out.println(p3.personagem + " venceu: ");
					p3.celebrar();
					
					System.out.println();
					
					System.out.println(p4.personagem + " perdeu: ");
					p4.perder();
					
						} else {
				
								if(p4.getDano() > p3.getDano()) {
									
									System.out.println(p4.personagem + " venceu: ");
									p4.celebrar();
									
									System.out.println();
									
									System.out.println(p3.personagem + " perdeu: ");
									p3.perder(); }
										
										} if (p4.getDano() == p3.getDano()) {
											System.out.println("A luta empatou. ");
										}}
			
			if (e.getSource().equals(def)) {
				new Desativar(atk, def, aux1, aux2);
			}
			
		}});

}

 }

[/code]

Vc quer manter um log das mensagens ou somente imprimir a atual?

Gostaria de apenas fazer aparecer na “Janela” o texto que aparece no console.

Você não entendeu minha pergunta, mas enfim…

Adicione um JTextArea, por exemplo, e ao invés de dar System.out.println("Mensagem"); vá adicionando as mensagens ao textArea, como assim:

JTextArea area = new JTextArea();//Cria a area de texto
scrollpane.setViewportView(area);// A adiciona ao scroll	
area.setText("Mensagem");//E vai adicionando as mensagens 

E é isso ai.

Mas e se eu quiser adicionar mais de uma mensagem? Tentei criar um novo JTextArea e adicioná-lo no scrollpane mas não funcionou, apenas um texto aparece na tela.

[code] JTextArea textArea = new JTextArea(30, 15);
JTextArea textArea2 = new JTextArea(30, 15);

	scrollpane.setViewportView(textArea);
	textArea.setText(p1.personagem + " atacou");
	
	scrollpane.setViewportView(textArea2);
	textArea2.setText(p2.personagem + " atacou");[/code]

Nesse exemplo só o “textArea2” apareceu na tela…
Eu precisaria estar adicionando vários textos na tela, mas não ao mesmo tempo com uma string só.

Não cara, não faz isso. Pensa comigo, se está apagando é porque está sendo sobreescrito, concorda?
Que tal você criar uma variável do tipo StringBuilder para ir concatenando as mensagens e no fim escrever no textArea.

Exemplo:

StringBuilder string = new StringBuilder();
string.append("jogador ");
string.append("atacando ");
string.append("o adversario");
		
textArea.setText(string);

A mensagem impressa será exatamente tudo.