Mais uma dúvida minha com o Swing… Se alguém puder me ajudar, meu problema é assim:
Tenho um JTextArea e eu quero, toda vez que eu digitar o caracter “[” automaticamente seja completado com o “]” e o cursor fique posicionado entre os colchetes. Tipo o editor de códigos de NetBeans. Esta ação deve ser gerada cada vez que eu pressionar as teclas “CTRL + Espaço”.
Se alguém pelo menos dizer o que eu devo pesquisar já ficaria muito agradecido, pois estou meio sem direção. Eu tentei caputar o texto digitado no JTextArea assim:
if(jTextArea_Formula.getText() == "["){
//Mais código aqui
}
Mas acho que não é a maneira ideal.
importjava.awt.event.KeyEvent;importjava.awt.event.KeyListener;importjavax.swing.BoxLayout;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JPanel;importjavax.swing.JTextArea;publicclassExemploextendsJFrame{JLabellabel;JTextAreatexto=null;JPanelpanel;publicExemplo(){BoxLayoutlayout=newBoxLayout(this.getContentPane(),BoxLayout.Y_AXIS);this.setLayout(layout);label=newJLabel("Teste");texto=newJTextArea();texto.addKeyListener(newKeyListener(){publicvoidkeyPressed(KeyEventarg0){}publicvoidkeyReleased(KeyEventarg0){Stringt=texto.getText();intpos=texto.getCaretPosition()-1;if(arg0.getKeyChar()=='['){t=t+"]";texto.setText(t);texto.setCaretPosition(pos+1);}}publicvoidkeyTyped(KeyEventarg0){// TODO Auto-generated method stub}});texto.setColumns(20);panel=newJPanel();panel.add(label);panel.add(texto);this.add(panel);this.pack();this.setVisible(true);}publicstaticvoidmain(Stringargs[]){Exemploexemplo=newExemplo();exemplo.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}
Obrigado pessoal. Eu nem queria o código pronto, pois acho que devemos, como profissionais saber encontrar as soluções para os problemas. Mas já que veio assim, poupei um pouco de esforço.
Na minha aplicação eu usei o código do acopiara. Então, eu usei somente a funcionalidade que eu queria. Na verdade, eu utilizei somente o trecho do código que me seria útil, e criei o método que segue abaixo: