Duvidas de ordenação e Limpar TextArea. [Resolvido]

8 respostas
lina

Oi,
Bom dia a todos..
Estou tentando fazer limpar o meu TextArea, quando clicado no evento no menu Novo..
porem ele funciona as 3 primeiras vezes, depois não funciona mais.. é como se o TextArea escreito,
não limpasse ou o outro (novo) ficasse em baixo..

Duvida: Não sei a ordem correta para limpar alguma coisa (se é que existe essa ordem),
mais me desculpem porque eu sempre me atrapalho na hora de limpar componentes e essas coisas...
não sei se primeiro limpa depois remove e depois remove do painel..

Acho que o problema está aqui:

//
// Remove tudo.
//
io_ta_codigo.setText("");
io_ta_codigo.removeAll();
desktop.remove(io_ta_codigo);
desktop.repaint();
Meu Evento do menu novo:
//
// Verifica se existe alterações na tabela.
//
if	(
		io_ta_codigo	!=	null
		&&
		io_ta_codigo.getText().trim().length()
				!=	0
	)
{
	//
	// Faz a pergunta, se deseja salvar as alterações.
	//
	int 
	i	=	JOptionPane.showConfirmDialog(
							null,
							"Deseja salvar as alterações?", 
							"Saída",
							JOptionPane.YES_NO_OPTION
						);
  				
	//
	// Se sim.
	//
  	if	(
  			i == JOptionPane.YES_OPTION 
  		) 
  	{
  	//
  	// Salva no pc.
  	//
  	try
  	{
  		//
  		// Salva o arquivo.
  		//
  		NewPadReadFile.ByteToFile(NewPadReadFile.FileToSave()+".txt",io_ta_codigo.getText().trim().getBytes(),false);
  	}
  	catch (FileNotFoundException e1)
  	{
  		// Lina Auto-generated catch block
  		e1.printStackTrace();
  	}
  	catch (IOException e1)
  	{
  		// Lina Auto-generated catch block
  		e1.printStackTrace();
  	}
} 
else 
{
	//
	// Remove tudo.
	//
  	io_ta_codigo.setText("");
  	io_ta_codigo.removeAll();
  	desktop.remove(io_ta_codigo);
  	desktop.repaint();

  	//
  	// Cria o novo TextArea.
  	//
  	CreateTextArea();
}
Meu método CreateTextArea:
/**
 * Método responsavel por criar a textarea.
 *
*/
public
void		CreateTextArea()
{		
	//
	// Cria o textarea.
	//		
	io_ta_codigo		=	new JTextArea();
	io_sp_pane		=	new JScrollPane(io_ta_codigo);
	io_sp_pane.setBounds(0,0,890,465);
		
	//
	// Adiciona ao desktop.
	//
	desktop.add(io_sp_pane);
		
	//
	// Requisita o foco.
	//
	io_ta_codigo.requestFocus();
}
Muito Obrigado.. Tchauzin!

8 Respostas

_Renatu

Olá

Se você quer só limpar o TextArea, use setText("");

Agora, se você for criar um novo (quando voce faz io_ta_codigo = new JTextArea()), o novo já vem “limpo”.

ViniGodoy

Se eu não me engano, você nem precisa chamar o repaint para o setText().

Eu desconfiaria mais desse if aí… você tem certeza que sempre que você quer o código está caindo no else?

lina

Oi,
tipo… verifiquei e está sempre caindo no else…

porem, isso está acontecendo quando seleciono o que ta escrito no textarea, e clico em novo… para limpar…
dai sim, não entra no else…

mais porque isso?

ViniGodoy

Não entendi nem o porque desse else.

Você testa no if se o text area existe e não é branco, certo?

Então, o código do else devera estar dentro desse if. Se estiver no else, quando ele vai limpar. Quanto o texto já for branco?

ViniGodoy

Ops… acho que falei besteira. Esse else para o NO_OPTION. :oops:

lina

Oi,
hehehheehe acontece =)

Olha só.. arrumei, consegui o/

com o código:

else 
{
  	//
 	// Limpa o texto no textarea.
  	//
  	io_ta_codigo.setText("");
  	desktop.repaint();
	
	//
	// Valida o TextArea novamente.
	//
  	desktop.revalidate();
}

Acho que o que está acontecendo era que estava chamando o método CreateTextArea, que tava formando outro textarea por cima.. sei lá.. ali eu já revalidei o textarea com o componente desktop!

Obrigado pela ajuda !

Tchauzin!

lina

Como coloco o titulo do Topico como Resolvido?

cassio

Vá até a primeira mensagem que você postou no tópico, clique em editar e altere o título.

Criado 17 de janeiro de 2007
Ultima resposta 17 de jan. de 2007
Respostas 8
Participantes 4