Como fazer para aparecer um texto na tela?

5 respostas
Victor_Noleto

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

[img]http://i.imgur.com/L8k1Hu1.jpg[/img]

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

	}

	 }

5 Respostas

xxMAGRAOxx

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

Victor_Noleto

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

xxMAGRAOxx

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.

Victor_Noleto

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.

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

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ó.

xxMAGRAOxx

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.

Criado 15 de abril de 2013
Ultima resposta 15 de abr. de 2013
Respostas 5
Participantes 2