2008-07-23: resolve melhorar um pouquinho o StrEditor e criei este método, getInfo(), que retorna um array de inteiros com várias informações a respeito dos ponteiros, offsets e tamanhos. No início temos o inteiro array que receberá as informações calculadas; declarei também várias variáveis que as descrevem cada índice do array. No fim retornamos o array int para ser utilizado com outros métodos.
private int[] getInfo(){
int[] info = new int[6];
try {
final int LINHA = 0;
final int INICIOOFFSETLINHA = 1;
final int FIMOFFSETLINHA = 2;
final int OFFSETTEXTO = 3;
final int TAMANHOTEXTO = 4;
final int TAMANHOPONTEIRO = 5;
info[LINHA] = getLine();
info[INICIOOFFSETLINHA] = txtMain.getLineStartOffset(info[LINHA]);
info[FIMOFFSETLINHA] = txtMain.getLineEndOffset(info[LINHA]);
info[OFFSETTEXTO] = info[INICIOOFFSETLINHA];
info[TAMANHOTEXTO] = (info[FIMOFFSETLINHA]-1) - info[OFFSETTEXTO];
info[TAMANHOPONTEIRO] = info[TAMANHOTEXTO];
} catch (BadLocationException ex) {
Logger.getLogger(StrEditorView.class.getName()).log(Level.SEVERE, null, ex);
}
return info;
}
Esta parte aqui foi colocada dentro dos métodos de evento de mouse e teclado. O que fazemos aqui é receber o array int do método getInfo() e trabalhar essas informações, no final passando os parâmetros necessário para o método writeChanges(), que irá atualizar os novos valores do ponteiro e seu conteúdo.
int info[] = getInfo();
try {
String texto = txtMain.getText(info[3], info[4]);
jLabel1.setText("Linha: " + info[0]);
System.out.println("Inicio linha offset: "+info[1]);
System.out.println("Fim linha offset: "+info[2]);
System.out.println(txtMain.getText(info[3], info[4]));
System.out.println("Tamanho para pegar o texto: "+info[4]);
lblTexto.setText("\""+texto+"\"");
lblTamanho.setText("Tamanho: "+String.valueOf(info[5]));
writeChanges( info[0], (short)info[5], texto);
} catch (BadLocationException ex) {
Logger.getLogger(StrEditorView.class.getName()).log(Level.SEVERE, null, ex);
}
private int[] getInfo(){
int[] info = new int[6];
try {
final int LINHA = 0;
final int INICIOOFFSETLINHA = 1;
final int FIMOFFSETLINHA = 2;
final int OFFSETTEXTO = 3;
final int TAMANHOTEXTO = 4;
final int TAMANHOPONTEIRO = 5;
info[LINHA] = getLine();
info[INICIOOFFSETLINHA] = txtMain.getLineStartOffset(info[LINHA]);
info[FIMOFFSETLINHA] = txtMain.getLineEndOffset(info[LINHA]);
info[OFFSETTEXTO] = info[INICIOOFFSETLINHA];
info[TAMANHOTEXTO] = (info[FIMOFFSETLINHA]-1) - info[OFFSETTEXTO];
info[TAMANHOPONTEIRO] = info[TAMANHOTEXTO];
} catch (BadLocationException ex) {
Logger.getLogger(StrEditorView.class.getName()).log(Level.SEVERE, null, ex);
}
return info;
}
Esta parte aqui foi colocada dentro dos métodos de evento de mouse e teclado. O que fazemos aqui é receber o array int do método getInfo() e trabalhar essas informações, no final passando os parâmetros necessário para o método writeChanges(), que irá atualizar os novos valores do ponteiro e seu conteúdo.
int info[] = getInfo();
try {
String texto = txtMain.getText(info[3], info[4]);
jLabel1.setText("Linha: " + info[0]);
System.out.println("Inicio linha offset: "+info[1]);
System.out.println("Fim linha offset: "+info[2]);
System.out.println(txtMain.getText(info[3], info[4]));
System.out.println("Tamanho para pegar o texto: "+info[4]);
lblTexto.setText("\""+texto+"\"");
lblTamanho.setText("Tamanho: "+String.valueOf(info[5]));
writeChanges( info[0], (short)info[5], texto);
} catch (BadLocationException ex) {
Logger.getLogger(StrEditorView.class.getName()).log(Level.SEVERE, null, ex);
}
Comentários