StrEditor: hoje fiquei quebrando a cabeça. Depois de abrir o arquivo str, preciso modificar a linha de texto e pegar somente o que me interessa, calculando o tamanho. Daí posso calcular o tamanho do ponteiro deste bloco modificado de texto. Bom, aproveitando o método que criamos anteriormente, getLine(), precisamos saber o início da linha, em offset: public int JTextArea.getLineStartOffset(int line). Com o método public int JTextArea.getLineEndOffset(int line) conseguimos saber o ultimo offset da linha em questão. Agora fica fácil, é só utilizar o método public String JTextArea.getText(int offs, int len), passando o offset e o tamanho a ser lido.
O código abaixo exemplifica o que fiz para conseguir isso:
private void txtMainMouseClicked(java.awt.event.MouseEvent evt) {
try {
int linha = getLine();//guarda a linha
int inicioOffsetLinha = txtMain.getLineStartOffset(getLine());//offset inicio linha
int fimOffsetLinha = txtMain.getLineEndOffset(linha);//offset fim linha
int offsetTexto = inicioOffsetLinha;//offset inicio do texto
int tamanhoTexto = fimOffsetLinha-offsetTexto;//tamanho do bloco de texto
int tamanhoPonteiro = tamanhoTexto-1;//tamanho do ponteiro
String texto = txtMain.getText(offsetTexto, tamanhoTexto);//bloco de texto
jLabel1.setText("Linha: " + linha);
//DEBUGSystem.out.println("Inicio linha offset: "+inicioOffsetLinha);
//DEBUGSystem.out.println("Fim linha offset: "+fimOffsetLinha);
//DEBUGSystem.out.println(txtMain.getText(offsetTexto, fimOffsetLinha-offsetTexto));
//DEBUGSystem.out.println("Tamanho: "+tamanhoTexto);
lblTexto.setText("\""+texto+"\"");
lblTamanho.setText(String.valueOf(tamanhoPonteiro));
} catch (BadLocationException ex) {
Logger.getLogger(StrEditorView.class.getName()).log(Level.SEVERE, null, ex);
}
}
O código abaixo exemplifica o que fiz para conseguir isso:
private void txtMainMouseClicked(java.awt.event.MouseEvent evt) {
try {
int linha = getLine();//guarda a linha
int inicioOffsetLinha = txtMain.getLineStartOffset(getLine());//offset inicio linha
int fimOffsetLinha = txtMain.getLineEndOffset(linha);//offset fim linha
int offsetTexto = inicioOffsetLinha;//offset inicio do texto
int tamanhoTexto = fimOffsetLinha-offsetTexto;//tamanho do bloco de texto
int tamanhoPonteiro = tamanhoTexto-1;//tamanho do ponteiro
String texto = txtMain.getText(offsetTexto, tamanhoTexto);//bloco de texto
jLabel1.setText("Linha: " + linha);
//DEBUGSystem.out.println("Inicio linha offset: "+inicioOffsetLinha);
//DEBUGSystem.out.println("Fim linha offset: "+fimOffsetLinha);
//DEBUGSystem.out.println(txtMain.getText(offsetTexto, fimOffsetLinha-offsetTexto));
//DEBUGSystem.out.println("Tamanho: "+tamanhoTexto);
lblTexto.setText("\""+texto+"\"");
lblTamanho.setText(String.valueOf(tamanhoPonteiro));
} catch (BadLocationException ex) {
Logger.getLogger(StrEditorView.class.getName()).log(Level.SEVERE, null, ex);
}
}
Comentários