Pular para o conteúdo principal
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);
}
}

Comentários

Postagens mais visitadas deste blog

Gamasutra's Postmorten: RiverMan Media's MadStone

Aqui vão os meus comentários sobre este postmortem. O jogo em questão, MadStone, foi desenvolvido para a plataforma WiiWare, vindo de um antigo sonho de publicar um jogo para Nintendo (dos fundadores da RiverMan). MadStone é um puzzle 2d, onde as peças vão caindo (assim como tetris) e que custa U$8.00 no WiiWare. Antes de publicar um jogo para WiiWare, a desenvolvedora havia já desenvolvido outros dois jogos casuais para PC, Cash Cow e Primate Panic. Tela do jogo MadStone Bom, vamos às dicas deixadas pelos desenvolvedores: O que funcionou: 1. Correr atrás da Nintendo: Entre contatar a Nintendo e se tornar um desenvolvedor autorizado, os desenvolvedores tiveram que correr um pouco atrás. A primeira lição é justamente essa, não é fácil correr atrás e muitas vezes temos que sair de nossa zona de conforto para conseguir as coisas. 2. Plataforma 2D: A decisão de desenvolver um jogo 2D foi tomada por algumas facilidades como ferramentas de arte mais simples, como o photoshop; Pouco código...

GameDev Tutorial - Basic Circle Chain Engine Using Unity3D Part 1

Circle Chain ( http://www.emanueleferonato.com/stuff/circle_chain/ ) is a simple game developed in 2007 by Emanuele Feronato ( http://www.emanueleferonato.com ) as a monetization test in Flash Games. In fact it's based on Boomshine ( http://www.k2xl.com/games/boomshine/ ) Emanuele has since, ported his game tutorial for lots of platforms: AS3: (complete)  http://www.emanueleferonato.com/2012/02/20/circle-chain-ported-to-as3-with-commented-source-code-available-ready-to-jump-to-the-iphone/ Game Maker: (basic)  http://www.emanueleferonato.com/2012/06/07/circle-chain-engine-made-with-game-maker/ Construct2 HTML5:  http://www.emanueleferonato.com/2012/03/14/html5-version-of-circle-chain-engine-using-scirras-construct2/ Corona SDK:  http://www.emanueleferonato.com/2012/02/24/basic-circle-chain-engine-using-corona-sdk/ Gideros Studio:  http://www.emanueleferonato.com/2012/04/12/basic-circle-chain-engine-using-gideros-studio/ Stencyl:  http://www.emanueleferonato.com/2012/02/29/ba...

Replicação coluna Text – SQL Server 2000

Hoje no trabalho, a pedido de um analista de sistemas, coloquei para replicar uma tabela. Eis que, depois de tudo pronto e configurado, no monitor de replicação do enterprise manager, tenho uma mensagem de erro na replicação, pois não é permitido update de coluna text junto com um index clustered. Agora mais essa, o SQL Server todo dia me prega uma peça. Bom, consultando meus caros colegas de trabalho pelo google, não encontrei nenhuma solução real para o problema, na replicação. Algumas soluções encontradas eram tirar o índice clustered e tentar update um por vez, dos campos. Bom resolvi usar minha própria solução: tirar a tabela da replicação, mudar a maldita coluna text para varchar e colocar para replicar novamente. Como a tabela já era populada e nunca havia tido a necessidade de replicá-la, tive que descobrir qual o tamanho máximo que algum registro da coluna text estava utilizando: select max(len(convert(varchar(8000),mensagem))) from base..tabela Varchar(8000) é por ...