Bom, primeiro de tudo prazer meu nome é Paulo…sou novo por aqui…
mas ja tenho problemas pra voces rsrs
mas prometo ajudar quando souber respostas de outros topicos
eu gosto muito do kWrite e o Kate do KDE do linux. e estou fazendo uma aplicacao similar ao KWrite em java e pretendia distribuir depois no Codigo-fonte mas tive um problema
queria registrar numa statusbar que criei o numero da linha e a coluna da linha corrente…
que nem o do eclipse entendem
tipo Linha 59 : Coluna 40
estou implementando keylistener e mouselistener para tratar justamente desses eventos…se o usuario clicar em um determinado ponto do codigo queria que aparecesse a linha e coluna da qual ele clicou
podem me ajudar ::(meu interrogacao num ta funcionando rsrs)
Muito interessante, mas e quanto a outra dúvida? Eu estou querendo saber como colocar Linhas e Colunas através de um evento do teclado e não do mouse, pois esse funcionou. Eu usei keylistener, mas ele só tem um método getKeyLocation que não funciona no caso. Tentei CaretListener, mas ele tem dois métodos que fazem a mesma coisa getDot e getMark.
Se eu digitar ao como “ABCD” eles retornam 4. Se em seguida eu apertar o ENTER pra pular de linha, eles retornam 5.
Alguém me ajuda?
paulo.ubuntu
Cara…eu consegui implementar assim
ve se te ajuda
CLasse de KeyListener
packagenet.sf.jnote.events;importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjavax.swing.SwingUtilities;importnet.sf.jnote.gui.FramePrincipal;importnet.sf.jnote.pojo.LinhasEColunas;importnet.sf.jnote.util.ClipBoardJava;importnet.sf.jnote.util.Criadora;//import pojo.AlteracoesTexto;/** * Essa Classe tem o Fundamento de suprir as necessidades do CTRL-Z e o * SHIFT_CTRL-Z , que seria respectivamente desfazer e refazer. É uma Class que * implementa KeyListener para ouvir as teclas prescionadas * * @author Paulo Miguel - [email removido] * */publicclassEventsKeyListenersimplementsKeyListener,Runnable{publicvoidkeyPressed(KeyEvente){// da a posicao inicial do cursor para que seja corretamente tratado na ClassAlteracoesTexto// if(e.getKeyChar() == 8) //Se o// alteratxt = new AlteracoesTexto();// alteratxt.setPosicao_inicial(FramePrincipal.edtArea.getCaretPosition());}publicvoidkeyReleased(KeyEvente){// Verifica se o Clipboard esta vazio , para entao// ativar o meuColarif(ClipBoardJava.getClipboardConteudo()!=null||ClipBoardJava.getClipboardConteudo()!="")Criadora.validaJMenuItem("colar",true);//Incrementa Linhas e Colunas no StatusBarSwingUtilities.invokeLater(newRunnable(){publicvoidrun(){LinhasEColunasb=newLinhasEColunas();b.encontraLinha(FramePrincipal.edtArea.getCaretPosition());FramePrincipal.indicadorColuna.setText(""+b.getColunaAtual());FramePrincipal.indicadorDeLinha.setText(""+b.getLinhaAtual());}});// da a posicao final do cursor para que seja corretamente tratado na ClassAlteracoesTexto// alteratxt.setPosicao_final(FramePrincipal.edtArea.getCaretPosition());// try {// //Obtem o texto entre as duas posicoes// alteratxt.setTextoAlterado(FramePrincipal.edtArea.getText(alteratxt.getPosicao_inicial(),1));// //Adiciona na lista static da class AlteracoesTexto// alteratxt.add();// System.out.println(alteratxt.toString(0));// } catch (BadLocationException e1) {// e1.printStackTrace();// }}publicvoidkeyTyped(KeyEvente){//Incrementa Linhas e Colunas no StatusBarSwingUtilities.invokeLater(newRunnable(){publicvoidrun(){LinhasEColunasb=newLinhasEColunas();b.encontraLinha(FramePrincipal.edtArea.getCaretPosition());FramePrincipal.indicadorColuna.setText(""+b.getColunaAtual());FramePrincipal.indicadorDeLinha.setText(""+b.getLinhaAtual());}});}//private AlteracoesTexto alteratxt; @Overridepublicvoidrun(){LinhasEColunasb=newLinhasEColunas();b.encontraLinha(FramePrincipal.edtArea.getCaretPosition());FramePrincipal.indicadorColuna.setText(""+b.getColunaAtual());FramePrincipal.indicadorDeLinha.setText(""+b.getLinhaAtual());}}
Classe Linhas e COlunas ( a que diz em qual linha e qual coluna se encontram)
packagenet.sf.jnote.pojo;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.StringReader;importjavax.swing.text.Element;importnet.sf.jnote.gui.FramePrincipal;/** * Prove numeros de linhas e Colunas do editor de Texto * Nessa caso ela sera utilizada para fornecer dados a * StatusBar de Linhas e colunas do FramePrincipal * @author paulo - [email removido] * */publicclassLinhasEColunas{publicLinhasEColunas(){}publicsynchronizedvoidencontraLinha(intcaracter){try{BufferedReaderreader=newBufferedReader(newStringReader(FramePrincipal.edtArea.getText()));intcontador=0;@SuppressWarnings("unused")StringlinhaEncontrada;while((linhaEncontrada=reader.readLine())!=null){contador+=1;}setLineCount(contador);//Encontra o final da linha e setafor(inti=0;i<=getLineCount();i++){encontraExtremosDaLinha(i);if(caracter<getCaracterFimLinha()&&caracter>getCaracterInicioLinha()||caracter==getCaracterInicioLinha()||caracter==getCaracterFimLinha()){setLinhaAtual(i);setColunaAtual(+(caracter-getCaracterInicioLinha()));}}}catch(IOExceptione){e.printStackTrace();}catch(NullPointerExceptione){//e.printStackTrace();}}privatesynchronizedvoidencontraExtremosDaLinha(intline){Elementmap=FramePrincipal.edtArea.getDocument().getDefaultRootElement();ElementlineElem=map.getElement(line);setCaracterInicioLinha(lineElem.getStartOffset());setCaracterFimLinha(((line==getLineCount()-1)?(lineElem.getEndOffset()-1):lineElem.getEndOffset()));}publicsynchronizedintgetLineCount(){returnlineCount;}publicsynchronizedvoidsetLineCount(intlineCount){this.lineCount=lineCount;}publicsynchronizedintgetCaracterInicioLinha(){returncaracterInicioLinha;}publicsynchronizedvoidsetCaracterInicioLinha(intcaracterInicioLinha){this.caracterInicioLinha=caracterInicioLinha;}publicsynchronizedintgetCaracterFimLinha(){returncaracterFimLinha;}publicsynchronizedvoidsetCaracterFimLinha(intcaracterFimLinha){this.caracterFimLinha=caracterFimLinha;}publicsynchronizedintgetColunaAtual(){returnColunaAtual;}publicsynchronizedvoidsetColunaAtual(intcolunaAtual){ColunaAtual=colunaAtual;}publicsynchronizedintgetLinhaAtual(){returnLinhaAtual;}publicsynchronizedvoidsetLinhaAtual(intlinhaAtual){LinhaAtual=linhaAtual;}privateintcaracterInicioLinha,caracterFimLinha,lineCount,ColunaAtual,LinhaAtual;}