Duvidas do Projeto Genesis?

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.