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

GameDev Tutorial - Basic Circle Chain Engine Using Unity3D Part 2

This part 2 is not so detailed like before, so If you need you can see the part 1 here:  http://alxcancado.tumblr.com/post/62482465038/gamedev-tutorial-basic-circle-chain-engine-using Once again I want say that this is my port for Unity3D from Emanuele Feronato's tutorial:  http://www.emanueleferonato.com/2013/05/21/from-zero-to-a-complete-game-with-cocos2d-html5-step-2-mouse-interaction/   Okay, time to put some mouse interaction. 1. add the new textures: red circle, bullet red; configure texture type to advanced, uncheck generate mipmap and filter mode to point. 2. drag and drop the greencircleprefab from prefab folder to the hierarchy. drag and drop the red circle texture to this and rename to RedCircle. Remove the GreenCricle script from it. We will create a script to this object later. 3. But we still need create our Bullet prefab. To make it simple, just duplicate the RedCircle object from hierarchy panel with Command+D or (Control+D in windows?). Then rename this ...