Edição de Texto em Swing

Olá pessoal, estou precisando colocar uma área de edição de texto(em minha aplicação swing) com as funcionalidades de Negrito, Itálico e mudar a cor da fonte, mas, se o Usuário selecionar o texto e colocar Negrito por exemplo o restante do texto deve permanecer sem negrito. Alguém conhece um editor de texto integrado ao Swing que resolva isso, estou qubrando a cabeça tentando com o jTextPane. Grato a todos.

procuro o JEditorPane.
O JTextArea quando se altera alguma propriedade é de todo o cmponente.
JA o Editor podemos maipular cada caracter.

quando chegar em casa procuro um exemplo que fiz no trabalho.

Att…

aqui nesse tópico tem um exemplo que eu fiz, mudando cor, tamanho, negrito, itálico, sublinhado

http://www.guj.com.br/posts/list/133949.java#721639

Don, o teu código eu já até tinha visto ontem e testei, mas, vi que ele altera a formatação do conteúdo todo de uma vez, acho que o 71C4700 tem uma implementação melhor para minha necessidade atual, de toda forma agradeço! Estarei aguardando o código de exemplo do 71C4700 e vou tesando o jEditorPane enquanto isso… vlw! :lol:

Desculpa pelo engano!

O exemplo que eu tinha pronto é utilizando JTextPane.

No metodo que faz as alterações no Style é só vc adicionar o que deseja e determinar uma forma de captura Cor, fonte, tamanho da fonte, se esta ou nao em negito,italico.

Em anexo o exemplo

Olá pessoal, continuo com problemas para edição de texto formatado em uma interface desktop java, estou passando por problemas, que um componente pronto para edição/formatação de texto evitaria, se alguém souber de algum componente pronto, por favor, post aí, desde já agradeço! :stuck_out_tongue:

Qual o problema que voce encontrou?

Oque deseja fazer?

O codigo acima nao o ajudou?

Att…

Usando a formatação do teu exemplo eu conseguiria exportar para html ou mandar para o Ireport?

(Se eu entendi você dividiu em dois componentes, um de entrada e um de saída, desculpe a pergunta, mas, não rodei teu código para verificar o funcionamento apenas li e tentei entender) - Você criou um listener para cada caracter que o usuário digita não foi isso?! Grato pela atenção e colaboração.

Vou tentar novamente pelo caminho do StyledDocument, eu havia mudado para formatar com html, porém, tive problemas com o método de replace do jEditorPane.

Vamos ve se entendi bem oque voce quer:

  1. deseja exportar os arquivos.
  2. Se voce colocar uma fonte em vermelho, quando exportar pra html, a pagina teria que ficar com a fonte vermelha.

É isso que deseja?

Quanto a exportar acho que nao seja grande problema,desde que não se encache em nenhum dos pontos acima.

Caso seja algum dos pontos, pode fazer igual alguns editores fazerm, colocar tags pra identificar as formatações ai vc criaria um leitor sintaxico pra analisar.

At…

vi teu código, testei em um exemplo que eu criei, ele guarda a formatação das demais partes do texto, porém, como eu faria para descobrir se aquela parte do texto selecionada já está em negrito por exemplo?

Vou explicar em detalhes o que eu preciso:

  • O usuário quer uma área para editar texto(necessariamente desktop), formatar negrito, sublinhado e itálico e mudar a cor, a prinípio só isso.
  • Esse texto fará parte de um documento a ser impresso, processo feito no ireport/jasperReport
  • O IReport aceita formatação html e RTF

Obrigado a todos e em especial pela atenção ao 71C4700.

Marcelo, tentei encontrar um componente pronto na internet mas infelizmente não encontrei nada.

Mas veja se esse tópico te ajuda. O código de exemplo usa a classe StyleConstants para realizar formatação, de repente você pode adequar às suas necessidades:

http://www.guj.com.br/posts/list/133949.java#721541

Desculpem-me colegas, postei sem verificar que o código do usuário 71C4700 já usa a referida classe.

Olá tnaires, o código de exemplo do 71C4700 já usa estas contantes, o que eu não consigo é recuperá-las para um determinado texto selecionado. Mas, estou tentando algo à respeito.

Em anexo algumas alterações.

  1. Pode alterar a cor.
  2. Pode exportar de uma caixa pra outra.

Veja se as modificações resolve o seu problema.
Desculpa pela bagunça é que tô trabalhando muito e sem muito tempo.

Att…

Olá 71C4700, teu código ajudou bastante, acho que agora vai, hehe! Quando eu tiver uma solução pronta eu posto aqui.

Olá 71C4700, demorei para disponibilizar, mas, segue, aí:
http://www.guj.com.br/posts/list/140350.java#756289

Boa Tarde Galera,

Estou precisando de uma ajuda.

Quero fazer um editor de texto que insira imagens tbm

Procurando nos foruns eu consegui fazer um bem simples…mas a unica coisa que consigo inserir são botoes. e não uma imagem.
Quero que o usuario escolha uma imagem de qualquer diretorio e a adicione no textpane.

Segue o codigo atual

import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;

public class PaneInsertionMethods {

  public static void main(String[] args) {

    final JTextPane pane = new JTextPane();

    

    // button to insert a button
    JButton buttonButton = new JButton("Inserir Imagem");
    buttonButton.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent event) {
        pane.insertComponent(new JButton("teste"));
      }
    });

    // layout da caixa de Texto
    JPanel buttons = new JPanel(); 
    buttons.add(buttonButton);

    JFrame frame = new JFrame("Caixa de Texto");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(pane, BorderLayout.CENTER);
    frame.getContentPane().add(buttons, BorderLayout.BEFORE_FIRST_LINE);
    frame.setSize(500, 600);
    frame.setVisible(true);
    
    JScrollPane scrollPane = new JScrollPane(pane);
    frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
  }
}
           
         

Abraços…

Dei uma modificada pra tentar abrir uma janela para selecionar o arquivo desejado mas está dando erro no showOpenDialog

segue codigo:


mport java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextPane;

public class EditorTexto {

  public static void main(String[] args) {

    final JTextPane pane = new JTextPane();

    

    // button to insert a button
    JButton botao = new JButton("Inserir Imagem");
    
    botao.addActionListener(new ActionListener()
    {
      public void actionPerformed(ActionEvent event)
      {
    	  
    		  JFileChooser arquivo = new JFileChooser();  
    		  arquivo.showOpenDialog(this);  
    		  arquivo.setVisible(true);
    		  
    	  
    	  
    	  
      }
    });

    // layout da caixa de Texto
    JPanel buttons = new JPanel(); 
    buttons.add(botao);

    JFrame frame = new JFrame("Caixa de Texto");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.getContentPane().add(pane, BorderLayout.CENTER);
    frame.getContentPane().add(buttons, BorderLayout.BEFORE_FIRST_LINE);
    frame.setSize(500, 600);
    frame.setVisible(true);
    
    JScrollPane scrollPane = new JScrollPane(pane);
    frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
  }
}
           
         

Alguem pode ajudar?

Olá!

Não sei se já resolveram… Mas para mostrar um JFileChooser faça o seguinte:

public void actionPerformed(ActionEvent event) { // Cria um novo fileChooser JFileChooser arquivo = new JFileChooser(); // Mostra o fileChooser com opção de abrir // e verifica se o botão de confirmação foi pressionado if (arquivo.showOpenDialog(pane) == JFileChooser.APPROVE_OPTION) { } }

Até +…