Efeito de cor no textfield

5 respostas
homisinho

olá pessoal,
coloquei estes códigos para uma textfield ficou legal.....
mas tenho q fazer isso em todas as minhas textfields do frame ou tem uma forma de ulizar para todas???

private void jTextField6FocusLost(java.awt.event.FocusEvent evt) {                                      
        jTextField6.setBackground(new java.awt.Color(102, 204, 154));
    }                                     

    private void jTextField6FocusGained(java.awt.event.FocusEvent evt) {                                        
      jTextField6.setBackground(new java.awt.Color(255, 255, 255));
    }                                       

    private void jTextField6MouseExited(java.awt.event.MouseEvent evt) {                                        
       if(!jTextField6.hasFocus()){
        jTextField6.setBackground(new java.awt.Color(102, 204, 154));   
       }        
    }                                       

    private void jTextField6MouseEntered(java.awt.event.MouseEvent evt) {                                         
        jTextField6.setBackground(new java.awt.Color(255, 255, 255));
    }

5 Respostas

T

Você pode trocar todas as JTextFields que você deseja ver esse efeito por instâncias de uma classe que derive de JTextField e que tenha esses tratamentos já efetuados.

Outra forma é criar uma classe separada, que implemente FocusListener e MouseListener, e que processe os eventos (checando o parâmetro evt, cujo método getSource() pode lhe retornar o JTextField que pode ser processado), e fazer as suas JTextFields adicionarem os listeners para uma instância dessa classe.

homisinho

thingol:
Você pode trocar todas as JTextFields que você deseja ver esse efeito por instâncias de uma classe que derive de JTextField e que tenha esses tratamentos já efetuados.

Outra forma é criar uma classe separada, que implemente FocusListener e MouseListener, e que processe os eventos (checando o parâmetro evt, cujo método getSource() pode lhe retornar o JTextField que pode ser processado), e fazer as suas JTextFields adicionarem os listeners para uma instância dessa classe.

Cara tem como vc fazer um exemplo de uma classe que faça isso :?:
Como pode ver estou começando no java, e pra mim tudo é mais complicado :oops:
tendo um exemplo basico, eu ja me viro!!!

T
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;

import javax.swing.JTextField;


public class Pintor implements MouseListener, FocusListener {

	/**
	 * @see java.awt.event.MouseListener#mouseClicked(java.awt.event.MouseEvent)
	 */
	public void mouseClicked(MouseEvent pE) {

	}

	/**
	 * @see java.awt.event.MouseListener#mouseEntered(java.awt.event.MouseEvent)
	 */
	public void mouseEntered(MouseEvent pE) {
		if (pE.getSource() instanceof JTextField)
			((JTextField) pE.getSource()).setBackground(new java.awt.Color(255,
					255, 255));
	}

	/**
	 * @see java.awt.event.MouseListener#mouseExited(java.awt.event.MouseEvent)
	 */
	public void mouseExited(MouseEvent pE) {
		if (pE.getSource() instanceof JTextField)
			if (!((JTextField) pE.getSource()).hasFocus()) {
				((JTextField) pE.getSource()).setBackground(new java.awt.Color(
						102, 204, 154));
			}
	}

	/**
	 * @see java.awt.event.MouseListener#mousePressed(java.awt.event.MouseEvent)
	 */
	public void mousePressed(MouseEvent pE) {

	}

	/**
	 * @see java.awt.event.MouseListener#mouseReleased(java.awt.event.MouseEvent)
	 */
	public void mouseReleased(MouseEvent pE) {

	}

	/**
	 * @see java.awt.event.FocusListener#focusGained(java.awt.event.FocusEvent)
	 */
	public void focusGained(FocusEvent pE) {
		if (pE.getSource() instanceof JTextField)
			((JTextField) pE.getSource()).setBackground(new java.awt.Color(255,
					255, 255));
	}

	/**
	 * @see java.awt.event.FocusListener#focusLost(java.awt.event.FocusEvent)
	 */
	public void focusLost(FocusEvent pE) {
		if (pE.getSource() instanceof JTextField)
			((JTextField) pE.getSource()).setBackground(new java.awt.Color(102,
					204, 154));
	}

}
lina

Oi homisinho ,
não sei se foi isso que o thingol quis dizer quando disse:

Você pode trocar todas as JTextFields que você deseja ver esse efeito por instâncias de uma classe que derive de JTextField e que tenha esses tratamentos já efetuados.

Então, abaixo segue a classe do meu JTextField:

public 
class			MeuTextField
	extends		JTextField
{	
	public		MeuTextField()
	{
		//
		// Chama o método responsavel por mudar a cor.
		//
		MudaCor();
	}
	
	/**
	 * Método responsavel por mudar a cor do TextField.
	 *
	 */
	public
	void			MudaCor()
	{
		setBackground(Color.YELLOW);
	}
}

Nesta classe, eu chamei um método que define a cor amarela para meu JTextField....
sendo assim, na minha classe principal.. ao invez de usar a variavel JTextField vou passar a usar o MeuTextField com a cor amarela.

segue o teste:

public class Teste extends JFrame
{
	public		MeuTextField
	io_tf_teste;
	
	public		Teste()
	{
		setSize(500,500);
		
		Window();
	}
	
	public
	void			Window()
	{
		getContentPane().setLayout(null);
		
		io_tf_teste	=	new MeuTextField();
		io_tf_teste.setBounds(5,10,100,100);
		getContentPane().add(io_tf_teste);
	}
	
	public static void main(String args[])
	{
		new Teste().setVisible(true);
	}
}

Você também já pode definir tamanho, digitos e tals.. não necessariamente a cor...

Tchauzin!

homisinho

ba valeu ai pessoal… aprendi a utilizar o implements…

Minha_textbox Eventos_TextBox = new Minha_textbox(); jTextField2.addMouseListener(Eventos_TextBox); jTextField2.addFocusListener(Eventos_TextBox);

demorei um pouco mas o q importa é q chegueilá… com a ajuda do thingol e da Lina

valeu mesmo!!!

Criado 12 de setembro de 2007
Ultima resposta 13 de set. de 2007
Respostas 5
Participantes 3