Eu tenho dois JTextArea q são carregados com o mesmo texto…
Qdo selecionasse com o mouse um trecho do texto da esquerda queria que ficasse selecionado simultaneamente o da esquerda e o seu correspondente na direita… E vice versa…Qdo selecionasse com o mouse um trecho do texto da direita queria que ficasse selecionado simultaneamente o da direita e o seu correspondente na esquerda…
Para capturar a seleção corrente, você pode definir um CaretListener para o JTextArea, através do método addCaretListener. Porém, não sei se é possível - creio que não - que um componente sem o foco possa ter alguma seleção.
É simples. Você pode usar os métodos getSelectionStart() e getSelectionEnd() para obter o início e o fim do texto selecionado no primeiro JTextArea, e então usar o método select( int start, int end ) para selecionar o texto no outro JTextArea.
Por exemplo, suponha que ao primeiro JTextArea você tenha dado o identificador j1 ( um objeto chamado j1 ) e ao outro j2, então basta fazer
assim:
Fiz um exemplinho que talvez traga luz a essa questão. O anexo que eu to enviando é um jar com um programinha tosco só pra exemplificar o meu post anterior. Selecione um trecho do text da esquerda e mande limpar o da direita. No jar vcs pode encontrar o fonte, ok?
***** NOTA DE EDIÇÃO *****
O anexo antes aqui existente foi retirado. Baixe o anexo do meu post seguinte
HAAAAA-LE-LU-JA!!!
Acho que consegui uma solução razoável para o problema usando a interface Highlighter. Usei o seguinte código no CaretListenenr de um dos JTextArea:
txaEnabled.addCaretListener(
new CaretListener() {
/* *********************
* Solução do problema *
* *********************/
public void caretUpdate(CaretEvent e) {
int
begin = Math.min(e.getDot(), e.getMark()),
end = Math.max(e.getDot(), e.getMark())
;
Highlighter hl = txaDisabled.getHighlighter();
hl.removeAllHighlights();
txaDisabled.select(begin, end);
try {
hl.addHighlight(begin, end, DefaultHighlighter.DefaultPainter);
} catch (BadLocationException e1) {
e1.printStackTrace();
System.exit(1);
}
}
}
);
Acho que isso resolve o caso…
QQ coisa, postem mais.