Campo de log [RESOLVIDO]

Pessoal, quero fazer um campo que mostre tudo o que eu colocar com o system.out.println… igualzinho o console do java, mas um capo em swing que vai colocando os dados na tela como um log

Eu coloquei um jtextfield mas fica sobre escrevendo e não fazendo um log

Incremente com o valor anterior, para que não sobrescreva

Como faria isso Igor??

Estou apanhando bastante disso… vc poderia me dar uma luz?

Exemplo:

String log = e.printStackTrace();


log += e.printStackTrace();

Ainda não entendi…

Pq é assim:

Uma leitura de porta serial… então toda hora reinicia o loop da leitura: o valor vai para o método getPeso();

ai eu seto em um campo de texto no swing

Posta seu codigo que fica mais facil ajudar (Apesar que a logica eu já dei)

Dessculpa igor… sou muito ruim em programação…


	public void serialEvent(SerialPortEvent ev) {

		StringBuffer bufferLeitura = new StringBuffer();

		int novoDado = 0;

		switch (ev.getEventType()) {
		case SerialPortEvent.BI:
		case SerialPortEvent.OE:
		case SerialPortEvent.FE:
		case SerialPortEvent.PE:
		case SerialPortEvent.CD:
		case SerialPortEvent.CTS:
		case SerialPortEvent.DSR:
		case SerialPortEvent.RI:
		case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
			break;

		case SerialPortEvent.DATA_AVAILABLE:

			// Verifica ConexaoPPP por outro modo de leitura

/*			if ("".equals(Tela.getTextField_NivelDeSinal_1_DG().getText())
					|| "".equals(Tela.getTextField_GPRS_DG().getText())
					|| "".equals(Tela.getTextField_IP_Operadora_DG().getText())
					|| "".equals(Tela.getTextField_Rede_DG().getText())
					|| "".equals(Tela.getTextField_Modo_DG().getText())) {

			} else if ("".equals(Tela.getTextField_ConexaoPPP_DG().getText())) {
				System.out
						.println("=========== Outro modo de ler dados - Por Bytes ===========");
				serialEvent1(ev);
			}*/

			// Novo algoritmo de leitura.
			while (novoDado != -1) {

				try {

					novoDado = entrada.read();

					if (novoDado == -1) {

						break;

					}

					if ('\r' == (char) novoDado) {

						bufferLeitura.append('\n');
						Tela.getTextField_StatusLeitura_DG().setText(
								"Lendo Dados...");
					} else {

						bufferLeitura.append((char) novoDado);
						Tela.getTextField_StatusLeitura_DG().setText(
								"Lendo Dados...");
						Tela.getTextField_StatusLeitura_DG().setBackground(
								Color.white);
					}

				} catch (IOException ioe) {
					JOptionPane.showMessageDialog(null,
							"Erro de leitura serial: " + ioe);
					Tela.getTextField_StatusLeitura_DG().setText(
							"Erro de leitura serial");
					System.out.println("Erro de leitura serial: " + ioe);

				}

			}

			setPeso(new String(bufferLeitura));

			verifica.validaDados(getPeso());
			

String Log = getPeso();
			System.out.println(getPeso());
			
			Tela.getTextField_Log_MO().setText(Log); // AQUI SETO O CAMPO QUE QUERO COLOCAR TUDO O QUE VAI PARA O SYSOUT


			Log += getPeso(); 
			
			Tela.getTextField_StatusLeitura_DG().setText("Lendo Dados...");
			Tela.getTextField_StatusLeitura_DG().setBackground(Color.green);
			break;

		}

	}

alguma ajuda?

não estou conseguindo reproduzir em um campo o que passa no sysout… Queria que fosse preenchendo o campo e apresentando tudo que foi enviado…

Usando um textArea com o método append() não resolveria seu caso?

Pesquise a documentação e implementação de jTextArea, acho que isso vai te ajudar.

Olá Ruttman blz? valeu pela resposta… coloquei como textArea, mas não consigo colocar as barras de rolagem e ir somando todo o texto enviado… ele fica sobreescrevendo

Voce tem que usar o append() do textarea, pois ele vai incrementar no seu texto, nao o setText, pois o setText é tudo que está contido no texto…

Pense como neste campo textArea onde você digita para escrever um post aqui no forum GUJ. Se você clicar em Editar, ele traz tudo que vc tinha escrito antes, com isso, se vc quiser adicionar mais coisas ao seu comentário, você incrementa no seu comentário antigo. Ou seja, a logica disso é: comentário antigo + comentário novo adicional

Quando vc faz o setText, você está editando todo o texto que havia nele, é como se ao clicar no botão editar do seu comentário do fórum, ai você apagasse tudo que estava escrito, e escreve qualquer outra coisa. Ele vai sobrepor o que vc havia feito

Entendi agora… valeu… está colocando certo… só que estou com outro problema… ele não tem barra de rolagem… não sei como fazer …

Consegui adicionando um JScrollPane como surrond… valeu aos dois… muito obrigado