JTextField Sobrescrever conteúdo

10 respostas
brunobuild

Eu preciso sobrescrever o conteudo de um JTextField.

Algum jeito de simular o que acontece com a Tecla “Insert” do teclado.

Por exemplo estou escrevendo alguma coisa e posiciono o cursor no primeiro caracter e digito ele vai escrevendo por cima substituindo as letras.

Existe alguma coisa assim?

10 Respostas

ViniGodoy

http://download.oracle.com/javase/6/docs/api/java/awt/Robot.html

brunobuild

Cara acho que isso não server.
Pelo que li essa classe Robot ele pega as ações do teclado e do mouse.

Essa informação que se colocada no JtextField não necessariamente virá do teclado.

Pode ser um botão por exemplo, que ao clicar ele chama o método settext.

O que eu quero fazer é como se fosse m display de calculadora, só que recebo informações via socket dizendo a posição que tem que ta no display e escrever.

Exemplo escrever a partir da coluna 11 e assim vai substituindo as seguintes.

Por exemplo.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
--------------------------B a n a n a

Ai eu mando escrever Bruno a partir da coluna 11 ele substitui

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
--------------------------B B r u n o

Não sei se ficou bem explicado

Mas agradeço a ajuda

Eric_Yuzo
Você pode implementar um Document que faça a reposição dos caracteres.
public void insertString(int offs, String str, AttributeSet a)
            throws BadLocationException {

        //Se o offset for menor que o tamanho do texto.
        if (offs < getLength())
            remove(offs, 1); //remove o caractere atual da posição.

        //Insere o texto digitado.
        super.insertString(offs, str, a);
    }
Este é um exemplo do que pode ser colocado no método insertString. Com alguma adaptação deve ser útil.

Falou...

ViniGodoy

E qual é o problema de chamar o setText ou o append do JTextArea?

Eric_Yuzo

Pelo que eu entendi, a questão é substituir o caractere que esteja logo após o cursor e o restante continua a mesma coisa, que nem no Word, quando acionamos a tecla “insert”.

brunobuild

Eric Yuzo,

Exatamente isso…

É que essa informações vem através de socket.

Ai eu recebo a posição que deve estar e o conteudo, só que por exemplo ele é bidirecional eu posso escrever por exemplo na posição 30 no primeiro comando e depois receber um comando pra escrever na posição 15 e substituindo os seguintes

brunobuild

Eric Yuzo,

Exatamente isso…

Eu recebo essas informações através de socket, eu recebo a posição do cursor e o conteudo que preciso escrever no JtextFiedl.

Por exemplo posição 30, ai eu começo a escrever o conteudo a partir da posicao 30, isso é bidirecional tanto pra frente quanto pra trás por exemplo:

Recebi a solicitação pra posicionar o cursor na posição 30 e começar a escrever o conteudo e depois posso receber uma outra solicitação pra posicionar na posição 10 e começar a escrever só que a partir da 10 eu tenho que substituir caso tenha algum conteudo

Igual ao botão “Insert”

Eric_Yuzo

Implementando o Document não dá certo?

ou o texto a ser inserido também vem do socket?

brunobuild

O texto a ser inserido também vem do socket.

Implementando o Document funcionou certinho mas quando eu digito pelo teclado.

Mas quando dou um setText ferra tudo.

Eric_Yuzo

Entendi.

Deste jeito não sei não. Dá pra fazer uma gambiarra com o texto do textField.

String texto = textField.getText(); String novoTexto = texto.substring(0, posicao) + "texto do socket" + texto.substring(posicao+1, texto.length()); textField.setText(novoTexto);
Falou…

Criado 27 de setembro de 2010
Ultima resposta 27 de set. de 2010
Respostas 10
Participantes 3