Bom fui na Conexao java e gostei muito da palesta do Michael Nascimento sobre o Genisis mais fiquei com uma duvida aki…
No empresa que estou atualmente usasse muito keylistener e mouselistener eu certo objeto quando o usuario pressionar o Pagedown abre uma pesquisa e no mesmo objeto quando pressiona o ENTER faz outra coisa. Minha pergunta é como eu faço essa implementação utilizando o GENESIS??
Espero Resposta…
Desde ja Obrigado a todos…
embora eu conheca o genesis mt pouco, alguem fez exatamente essa pergunta no justjava na palestra do mister_m (vc talvez?), mas a ideia eh criar um Binder personalizado para esse seu componente e registrar atraves dele os InputListeners
Nao sei se compreendi muito bem a pergunta, correa, mas pelo que parece o que você deveria ter eh um componente pra encapsular essas funcionalidades. Para usar o componente na aplicação com o modelo de programação do genesis, basta você criar um binder para ele.
A documentacao contém informação sobre como customizar o binder para novos componentes.
Caso você queira fazer outras perguntas, além de poder perguntar aqui no fórum, o genesis possui uma lista de discussão, usuarios@genesis.dev.java.net. Para assiná-la, mande um email para usuarios-subscribe@genesis.dev.java.net e responda ao email que o servidor lhe enviará.
Mister_m
Sem abusar muito vc poderia me passar um exemplo (Se vc tiver) que quando pressionado a tecla page-down execute algo…
Obrigado desde ja…
Correa,
O ideal para que voce possa compreender a questao eh voce me passar um exemplo de codigo do que voce estah querendo fazer para que possa explicar como adequa-lo ao genesis.
Bom mister_m criei um exemplo simples que copia o q foi digitado na coluna1 para a coluna2. Na empresa eu utilizo muito isso se o usuario pressionar tal tecla faça isso se clicou em tal componente ou botao faça isso e no exemplo abaixo: implementei o mouselistener que foi utilizado no botao “copiar” e o keylistener q que foi utlizado na “coluna1” ,quando o usuario pressionar a tecla page-down executar o metodo Copiar()…
E no genesis como seria feito isso…
import java.awt.Rectangle;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class Eventos extends JFrame implements MouseListener, KeyListener{
private static final long serialVersionUID = 1L;
private JPanel painelPrincipal = null;
private JTextField coluna1 = null;
private JButton copiar = null;
private JTextField coluna2 = null;
public Eventos() {
super();
initialize();
}
private void initialize() {
this.setSize(385, 267);
this.setContentPane(getJContentPane());
this.setTitle("Teste de Eventos");
this.setVisible(true);
}
private JPanel getJContentPane() {
if (painelPrincipal == null) {
painelPrincipal = new JPanel();
painelPrincipal.setLayout(null);
coluna1 = new JTextField();
coluna1.setBounds(new Rectangle(26, 28, 152, 20));
coluna1.addKeyListener(this);
coluna2 = new JTextField();
coluna2.setBounds(new Rectangle(198, 28, 152, 20));
copiar = new JButton();
copiar.setBounds(new Rectangle(116, 181, 148, 32));
copiar.setText("Copia");
copiar.addMouseListener(this);
painelPrincipal.add(coluna1);
painelPrincipal.add(copiar);
painelPrincipal.add(coluna2);
}
return painelPrincipal;
}
/**
* Metodo que copiar a coluna 1 para a 2
*
*/
public void Copiar(){
coluna2.setText(coluna1.getText());
}
public static void main(String[] args) {
Eventos app = new Eventos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
/**
* Eventos do Mouse
*/
public void mouseClicked(MouseEvent e) {
if(e.getSource() == copiar){
Copiar();
}
}
public void mouseEntered(MouseEvent e) {}
public void mouseExited(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
/**
* Eventos do Teclado
*/
public void keyPressed(KeyEvent e) {
if(e.getSource() == coluna1){
if(e.getKeyCode() == KeyEvent.VK_PAGE_DOWN){
Copiar();
}
}
}
public void keyReleased(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
}
Fico no aguardo
Correa,
No seu exemplo especifico, JTextField jah possui um mecanismo para disparar acoes, o ActionEvent. Voce deveria associar essas teclas com este evento.
O genesis atualmente nao faz binding entre Action e JTextField. Criei um issue para fazer isso de forma automatica. No entanto, eh bem simples fazer hoje.
Primeiro, leia como customizar o binding de widgets. No seu caso especifico, basta seguir a mesma linha de raciocinio do AbstractButtonComponentBinder.