Formatando texto em swing

pessoal queria saber como faço para que possa colocar um texto formatado …

tipo queria colocar uma caixa de texto onde eu pudesse colocar palavras em itálico.

qual componente swing eu uso?

Um JLabel vc poderia fazer isso, é só usar formatação html que vai ser renderizado. A maioria dos componentes Swing tem essa funcionalidade.

Falow!

blz … disso eu sei…

mas tipo… tenho um formulário que um usuário preenche e ele pode colocar palavras em itálico… tenho que fazer como ele colocar palavras em itálico em algum componente de texto… mas nao sei qual

Que eu saiba, só tem como fazer isso usando um JTextPane.
Mas não é tarefa das mais fáceis…

JPanel panel = new JPanel(); panel.setFont(new java.awt.Font("Arial", 3, 12)); panel.setFont(new java.awt.Font("Arial", font.ITALIC, 12)); panel.setFont(new java.awt.Font("Arial", font.BOLD , 12)); panel.setBackground(Color.LIGHT_GRAY); panel.setLayout(new GridBagLayout()); TitledBorder border = new TitledBorder("UNIVERSO"); border.setTitleColor(new java.awt.Color(255, 255, 200)); border.setBorder(BorderFactory.createLineBorder(Color.BLUE, 1)); panel.setBorder(border);

[color=darkblue]O mesmo se aplica a um JTextField e vários outros componentes do Swing [/color]

        JTextField text = new JTextField();
        text.setFont(new java.awt.Font("Arial", Font.ITALIC, 12));
        text.setFont(new java.awt.Font("Arial", Font.BOLD, 12));
        text.setBackground(Color.LIGHT_GRAY);
        text.setForeground(Color.LIGHT_GRAY);

ae , eu fiz assim

criei um JTextPane … e criei um botao …

no evento click do botao eu coloquei

int pos = txtTituloImagem.getCaretPosition();
Action action = new StyledEditorKit.ItalicAction();
action.actionPerformed(evt);
txtTituloImagem.grabFocus();

eu consegui colocar em italico dentro do JTextPane…

porem quando eu passo essa string… ela vai normal…
ela nao passa em itálico…

e agora?

[color=darkblue] Tente isso com um JTextField ou com qualquer outro componente, inclusive o JtextPane:[/color]

text.setFont(new java.awt.Font("Arial", Font.ITALIC + Font.BOLD, 12));

[color=darkblue] Aqui funcionou:[/color]

na verdade eu preciso que algum componente de texto passe para mim a string em html pois vou colocar num banco entende.

preciso que quando eu escreva algo em italico ele me retorne a string já com o html especifico… tipo:

trabalho em italico ;;;;;;>>>>>>> fique >>> trabalho

algo do tipo… pq preciso guardar a string em italico…

nao sei como posso fazer isso

Aí, galera… Sei que já faz um bom tempo que esse tópico foi aberto, porém 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 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!

1 curtida