[RESOLVIDO]Setando texto apartir de determinada posição

4 respostas
Scorsatto

Bom dia a todos.

Tenho um JEditorPane onde possuo um botão que ao clicado insere a data no JEditorPane, até ai tudo bem,
o problema é que ele apaga qualquer coisa que eu já havia digitado.

Alguem teria alguma ideia de como pegar a posição do cursor e começar a escrever a data apartir daquele ponto?

Segue codigo.

this.buttonInserirData.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				
				DateFormat dfmt = new SimpleDateFormat("EEEE, d 'de' MMMM 'de' yyyy");  
				Date hoje = Calendar.getInstance(Locale.getDefault()).getTime();    
				
			    editorPanePrincipal.setContentType("text/html" );
			    editorPanePrincipal.setText("<html><b>" + dfmt.format(hoje) + "</b></html>"); 
				
			}
		});

4 Respostas

E

Um exemplo bobo. Não sei se funciona com text/html :^(

package guj;

import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.SwingUtilities;
import javax.swing.text.BadLocationException;

public class TesteJEditorPane extends JFrame {

    private static final long serialVersionUID = 1L;
    private JPanel jContentPane = null;
    private JPanel pnlBotoes = null;
    private JButton btnInserirData = null;
    private JScrollPane scpEditor = null;
    private JEditorPane edpEditor = null;

    private JPanel getPnlBotoes() {
        if (pnlBotoes == null) {
            pnlBotoes = new JPanel();
            pnlBotoes.setLayout(new FlowLayout());
            pnlBotoes.add(getBtnInserirData(), null);
        }
        return pnlBotoes;
    }

    private JButton getBtnInserirData() {
        if (btnInserirData == null) {
            btnInserirData = new JButton();
            btnInserirData.setText("Colar Data Atual");
            btnInserirData.addActionListener(new java.awt.event.ActionListener() {
                public void actionPerformed(java.awt.event.ActionEvent e) {
                    // Pego onde está o começo....
                    int selectionStart = edpEditor.getSelectionStart();
                    try {
                        // E então insiro os dados desejados.
                        edpEditor.getDocument().insertString(selectionStart, df.format(new Date()), null);
                    } catch (BadLocationException ex) {
                    }
                    // Note que ao clicarmos o botão, o foco foi transferido para o botão, 
                    // então para facilitar devemos retornar o foco para o JEditorPane.
                    edpEditor.grabFocus();
                }

                private DateFormat df = new SimpleDateFormat("dd/MM/yyyy");
            });
        }
        return btnInserirData;
    }

    private JScrollPane getScpEditor() {
        if (scpEditor == null) {
            scpEditor = new JScrollPane();
            scpEditor.setViewportView(getEdpEditor());
        }
        return scpEditor;
    }

    private JEditorPane getEdpEditor() {
        if (edpEditor == null) {
            edpEditor = new JEditorPane();
        }
        return edpEditor;
    }

    public static void main(String[] args) {
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                TesteJEditorPane thisClass = new TesteJEditorPane();
                thisClass.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                thisClass.setVisible(true);
            }
        });
    }

    public TesteJEditorPane() {
        super();
        initialize();
    }

    private void initialize() {
        this.setSize(300, 200);
        this.setContentPane(getJContentPane());
        this.setTitle("Teste JEditorPane");
    }

    private JPanel getJContentPane() {
        if (jContentPane == null) {
            jContentPane = new JPanel();
            jContentPane.setLayout(new BorderLayout());
            jContentPane.add(getPnlBotoes(), BorderLayout.SOUTH);
            jContentPane.add(getScpEditor(), BorderLayout.CENTER);
        }
        return jContentPane;
    }
}
Scorsatto

Muito obrigado entanglement , funcionou perfeitamente.

E

Tentei isso:

...
import javax.swing.text.SimpleAttributeSet;
import javax.swing.text.StyleConstants;
...
                        SimpleAttributeSet attributes = new SimpleAttributeSet();
                        StyleConstants.setBold(attributes, true);
                        edpEditor.getDocument().insertString(selectionStart, df.format(new Date()), attributes);
...

mas parece meio bugado.

Scorsatto

Bom dia entanglement, testei em outros textos que tenho que montar e funcionou perfeitamente, muito obrigado.

Criado 2 de dezembro de 2010
Ultima resposta 3 de dez. de 2010
Respostas 4
Participantes 2