Ae galera blza !! a classe que eu vou mostrar a seguir e parte do framework swingdata no qual estou desenvolvendo e ja devo ter uma versão essa semana, atrasou :roll: , mas vamos lá, para o pessoal que quer ter efeito de ENTER p/ proximo campo e tambem efeitos de seleção de texto ao dar foco e mudança de cor dos componentes de texto ao receber foco faça o seguite:
Crie uma interface vazia com o seguinte conteudo:
/*
* Created on 07/07/2004
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
//package com.swingdata; Coloque o package de sua preferencia
/**
* @author William J. Oliveira
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public interface ModelDataComponet {
}
depois crie a classe a seguir:
/*
* Created on 14/07/2004
*
* To change the template for this generated file go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
//package com.swingdata.extras; coloque o package que achar melhor
import java.awt.Color;
import java.awt.Component;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import javax.swing.JComboBox;
import javax.swing.JTextField;
import com.swingdata.ModelDataComponet;
/**
* @author William J. Oliveira
*
* To change the template for this generated type comment go to
* Window>Preferences>Java>Code Generation>Code and Comments
*/
public class ComponentEnter implements KeyListener, FocusListener {
private ModelDataComponet form;
private Color background;
private Color temp_background;
private boolean focuscolor = false;
private boolean focusselect = false;
public ComponentEnter(ModelDataComponet form) {
this(form, false,false, null);
}
public ComponentEnter(ModelDataComponet form, boolean b1,boolean b2, Color c) {
this.background = c;
this.focuscolor = b1;
this.focusselect = b2;
this.form = form;
initAll();
}
/**
*
*/
private void initAll() {
Class c = form.getClass();
Method[] m = c.getDeclaredMethods();
for (int i = 0; i < m.length; ++i) {
try {
if (m[i].getName().indexOf("get") != -1) {
System.out.println(m[i].getName());
Object ret = m[i].invoke(form, null);
if (ret instanceof Component)
((Component) ret).addKeyListener(this);
if (ret instanceof JTextField)
((JTextField) ret).addFocusListener(this);
if (ret instanceof JComboBox)
((JComboBox) ret).addFocusListener(this);
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_ENTER) {
// Pega o componente de onde veio o evento
Component c = e.getComponent();
// transfere o foco para o proximo componente
c.transferFocus();
c = null;
}
}
public void keyTyped(KeyEvent e) {
}
public void keyReleased(KeyEvent e) {
}
/* (non-Javadoc)
* @see java.awt.event.FocusListener#focusGained(java.awt.event.FocusEvent)
*/
public void focusGained(FocusEvent e) {
if (focuscolor) {
// Pega o componente de onde veio o evento
Component c = e.getComponent();
if (focusselect) {
if (c instanceof JTextField)
((JTextField) c).selectAll();
}
// transfere o foco para o proximo componente
temp_background = c.getBackground();
c.setBackground(background);
c = null;
}
}
public void focusLost(FocusEvent e) {
if (focuscolor)
e.getComponent().setBackground(temp_background);
}
/**
* @return
*/
public Color getBackground() {
return background;
}
/**
* @return
*/
public boolean isFocuscolor() {
return focuscolor;
}
/**
* @param color
*/
public void setBackground(Color color) {
background = color;
}
/**
* @param b
*/
public void setFocuscolor(boolean b) {
focuscolor = b;
}
/**
* @return
*/
public boolean isFocusselect() {
return focusselect;
}
/**
* @param b
*/
public void setFocusselect(boolean b) {
focusselect = b;
}
}
depois no cosntrutor de sua classe JForm, JPanel e etc coloque o seguinte codigo:
ComponentEnter enter = new ComponentEnter(this,true,true,Color.YELLOW);
Lembrando que o Componente usa reflection de modo que vc tem de beanficar sua Classe, ou seja criar gets para os components que vc desejar implementar essas funções tipo:
private JTextField text = new JTextField();
public JTextField getText(){
return text;
}
bom por enqaunto e isso ai, isso e parte dos componentes extras do pacote swingdata, to desenvolendo outros como caixas de texto com calendario e etc … p/ facilitar o desenvolvimento desktop, quem quiser mais infos sobre o projeto comunica-me
vou ver se essa semana termino pois perdi um tempão essa semana padronizando o codigo
valew!!!
t+

