Pular para o conteúdo principal
2008-07-18: Nesta madrugada estou eu mexendo um pouquinho no strEditor. Desta vez o desafio foi criar um mecanismo que por onde eu percorra ou click na área de texto, seja exibido em que linha estou. Consegui resolver da seguinte maneira:

- primeiro, pego a atual posição do cursor: JTextArea.getCaretPosition() retorna um int da posição de onde está o cursor.
- depois, utilizando o método JTextArea. getLineOfOffset(int offset) teremos como resultado um int da linha que está o offset.

Na prática, criamos um método getLine():

private int getLine(){
int posicao = txtMain.getCaretPosition();//guarda a posição do cursor
int linha = 0;//inicializa com 0
try {
//passamos como parâmetro a posição do cursor
linha = txtMain.getLineOfOffset(posicao); }
catch (BadLocationException ex) {
//
}
return linha;//retorna a linha do cursor
}

Setando o label ficaria assim: jLabel1.setText("Linha: "+getLine());

Um probleminha que tive, foi ao implementar o evento de teclado, tinha colocado o de KeyPressed e chamava o método getLine(), mas daí dava um bug na contagem, pois quando pulamos para a linha abaixo, não passava de 0 para 1, continuava 0 e só então outra linha abaixo é que era atualizado a linha, numa contagem atrasada. Consegui solucionar utilizando o evento de KeyReleased na JTextArea. Show de bola.

Amanhã invento alguma coisa novamente...

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...

E.T. the Extra-Terrestrial em 3 níveis

E.T. o Extra-Terrestre E.T. o Extra-Terrestre, de 1982, é um consagrado filme co-produzido e dirigido por Steven Spielberg, que fez parte da minha infância. Assisti novamente depois de uns 15 anos e nem preciso dizer que foi nostálgico.