Inserir várias linhas ao JtextPane [RESOLVIDO]

3 respostas
marcospaulo.suporte

Pessoal, boa tarde.
Como faço pra inserir várias linhas no JTextPane? (existe algum comando especifico?)

Uso o .setText, porém ele substitui a cada novo comando, gostaria de fazer igual ao .append() do JtextArea.

Preciso formatar cores nesse JTextPane (em html), por isso não posso usar o JtextArea.

Obg a todos.

3 Respostas

E

Guarde o conteúdo do que vai ser mostrado no JTextPane em uma string, e vá acrescentando dados a essa string. Depois de acrescentar os dados, use setText.

A propósito, você está usando HTML, certo? Nesse caso, como você tem de levar em conta que você tem um tag para fechar o html, não dá simplesmente para ficar acrescentando cegamente. Você precisa, para acrescentar mais dados, de tirar a tag de fechamento, acrescentar os dados, e acrescentar o tag novamente - e acho que é por esse motivo que não existe um “append” como no JTextArea - é que essa regra de tirar ou pôr coisas para que fique sempre válido depende da aplicação e do formato dos dados.

marcospaulo.suporte

entanglement:
Guarde o conteúdo do que vai ser mostrado no JTextPane em uma string, e vá acrescentando dados a essa string. Depois de acrescentar os dados, use setText.

A propósito, você está usando HTML, certo? Nesse caso, como você tem de levar em conta que você tem um tag para fechar o html, não dá simplesmente para ficar acrescentando cegamente. Você precisa, para acrescentar mais dados, de tirar a tag de fechamento, acrescentar os dados, e acrescentar o tag novamente - e acho que é por esse motivo que não existe um “append” como no JTextArea - é que essa regra de tirar ou pôr coisas para que fique sempre válido depende da aplicação e do formato dos dados.

Certo… vou testar aqui e retorno.

marcospaulo.suporte

Consegui resolver como foi passado pelo nosso amigo entanglement.

String armazena = je_tx_pane.getText().replaceAll("<[^>]+>", "")+"\n\n";

Substitui as Tags html do conteudo que pegava, armazeno na String armazena e acrescento no painel depois novamente.

je_tx_pane.setText(armazena+"\n("+mostra_data.hora+")<font color=\"#FF0000\"> Fulano disse.: </font>"+tf_msg.getText()+" \n");

Obrigado entanglement;

Criado 7 de dezembro de 2012
Ultima resposta 7 de dez. de 2012
Respostas 3
Participantes 2