Aí, galera!
Alguém sabe formatar texto em JTextPane?
Tipo, eu preciso formatar uma palavra selecionada num texto digitado dentro de um JTextPane com a letra maior e na cor vermelha, por exemplo.
Algúem sabe como fazer isso?
Um abraço!
Alguém sabe formatar texto em JTextPane?
1 Resposta
Aí, galera… Ninguém me respondeu nesse tópico, porém consegui uma solução e vou responder a pergunta para finalizar o tópico com a solução para ajudar aqueles que tiverem o mesmo problema e lerem esse tópico através da pesquisa do fórum…
Para formatação de texto que será gravado em banco de dados, sem dúvidas, a melhor opção para a maioria dos casos é o uso do HTML, que você pode gravar num simples campo do tipo text…
Usamos o componente jEditorPane, ao invés do jTextPane, para a tarefa de exibir um container HTML…
Para isso, vamos dar a opção de itálico a um texto selecionado pelo usuário…
// no ActionPerformed de um jButton, por exemplo, podemos chamar o método para colocar em itálico o texto selecionado...
private void formatarSelecaoItalico() {
// vamos separar o texto selecionado e o texto não selecionado no JEditorPane instanciado como editPanel...
String selecaoStr, textoForaSelecao1 = editPanel.getText().substring(0,editPanel.getSelectionStart());
String textoForaSelecao2 = editPanel.getText().substring(editPanel.getSelectionEnd(), editPanel.getText().length());
selecaoStr = editPanel.getSelectedText();
// agora, usando replaceAll vamos colocar as tags HTML para definirmos o itálico...
selecaoStr = selecaoStr.replaceAll(selecaoStr, "<i>"+selecaoStr+"</i>");
// e então, é só voltar todo o texto retirado para o editPanel e partir para o abraço... rssrsrsr...
editPanel.setText(textoForaSelecao1+selecaoStr+textoForaSelecao2);
}
Bom, essa foi a solução que eu desenvolvi para mim… Funciona perfeitamente… Talvez alguém saiba de algo mais simples do que o uso de substring e replace, mas está aí para quem precisar fazer…
Um grande abraço!