Focus

5 respostas
G

pessoal, pegunta assim meio idiota, mas nao estou conseguindo fazer… como eu uso metodo focus() para atribuir o focu a um campo?

valeu.
GAbriel

5 Respostas

R

Olha não sei bem oq vc quer se é so obter o foco ja ti adianto vc terá que implementar a Interface FocusListener como se trata de interface terá que colocar todos os metedos dela q são somente dois:

public void focusGained(FocusEvent f)

public void focusLost(FocusEvent f)

mas se tiver mais duvidas diga oq vc ta querendo fazer a ti ajudo

G

Olá Ricardo,
Bem, o que eu queria era o seguinte, tenho uma caixa de texto e digito uma informação errada, entao dou uma mensagem de erro e o campo texto volta a receber o foco ou se estiver ok o focu passa para o proximo campo

valeu
GAbriel

P

Ola Gabriel,

seuCampo.requestFocus();

falow;

R

ta um exemplos de como funciona o focus basta implementar sua logica

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Login extends JDialog implements ActionListener, FocusListener
{
	private Container c;
	private JPanel p;
	private JLabel name,senha;
	private JTextField usuario;
	private JPasswordField password;
	private JButton botok,botlimpar;
	private JSeparator s;
	private int erro;
		public void actionPerformed(ActionEvent e)
	{
		//Condiçao se clicar no botao "botok" dispara o Evento onde vai comparar se a senha informada esta correta
		//para entrar na Classe DeskTop
		if(e.getSource()==botok)
		{
			if(String.valueOf(password.getPassword()).equals("123"))
			{	
				DeskTop t= new DeskTop();
				t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
				setVisible(false);
			}
			//se a senha estiver incorreta retorna uma mensagens de aviso
			else
			{
				JOptionPane.showMessageDialog(null,"Usuario ou Senha Incorreta","aviso",JOptionPane.INFORMATION_MESSAGE);
				password.setText("");//limpa a caixa de texto senha
				password.requestFocus();//foca na caixa de texto senha se a senha for informada errada
				botok.setEnabled(false);//desabilita o botao ok apos constar erro se senha
			erro++;//contador que contara qtas vezes foi informada senha incorreta
			}
			//condiçao se o erro for notado 2 vezes dará uma mensagem alertando que que se errar de novo vai encerrar
			if(erro==2)
			{
				JOptionPane.showMessageDialog(null,"Se vc digitar Usuario e Senha invalidos novamente!"+"\n"+"O sistema vai encerrar o programa!","aviso",JOptionPane.ERROR_MESSAGE);
			}
			//se informou 3 vezes será encerrado
			if(erro==3)
			{
				JOptionPane.showMessageDialog(null,"Voce Informou Usuario e Senha errado tres vezes O sistema vai encerrar o programa!","aviso",JOptionPane.ERROR_MESSAGE);
				System.exit(0);//sair
			}
				
		}
		//se Clicar no botão "botlimpar" limpara todas as caixas de texto e desabilitando o botao OK
		if(e.getSource()==botlimpar)
		{
			usuario.setText("");//limpa a caixa de texto usuario
			password.setText("");//limpa a caixa de texto da senha
			usuario.requestFocus();// depois que limpa e foca na caixa de texto usuario
			botok.setEnabled(false);//desabilita o botao
		}
	}
	//metodo ganhar foco da classe FocusListener 
	//nao usaremos neste caso mas teremos que implementar ele, pois se trata de um Interface
	//mas nao precisamos implementar nada
	public void focusGained(FocusEvent f)
	{
	}
	
	//metodo perder foco da classe FocusListener
	//implementamos, pois queremos que ao sair das caixas de texto ele faca uma verificacao e faca algumas
	//acoes caso as verificacoes sejam corretas
	public void focusLost(FocusEvent f)
	{
		//Se o texto da caixa de texto usuario for maior que zero e o texto da
		//caixa de senha for maior que zero faça
		if((usuario.getText().length()>0)&&(String.valueOf(password.getPassword()).length()>0))
		{
			botok.setEnabled(true);//habilita o botao OK
			botok.requestFocus();//foca no botao OK
		}
	}	
	//Construtor
	public Login()
	{
		
		setSize(410,170);//dando tamanho ao frame na tela
		setLocation(300,200);//dando posiçao ao frame tela
		c=getContentPane();//atribuiçao para o container
		c.setLayout(null);//layout nulo
		setResizable(false);//metodo que naum permite a maximizaçao do frame
		c.setBackground(new Color(212,208,200));//atribuindo cor ao container
		
		//criação de um painel ao container
		p=new JPanel();
		p.setLayout(null);//layout nullo
		p.setBounds(0,0,310,150);//posiçao do painel np container
		p.setBackground(new Color(212,208,200));//cor atribuida ao painel
		
		name=new JLabel("Username:");//criando um rotulo
		name.setBounds(27,45,70,10);//posiçao onde ficara esse nome
		p.add(name);//adicionado esse Label ao painel que se encontra no container
		
		senha=new JLabel("Password:");//criando um rotulo
		senha.setBounds(27,85,70,10);//posiçao onde ficara esse nome
		p.add(senha);//adicionado esse Label ao painel que se encontra no container
		
		usuario=new JTextField();//criando um caixa de texto
		usuario.setBounds(90,40,160,20);//posiçao onde ficara essa caixa de texto
		usuario.requestFocus();//dando foco na caixa de texto usuario ao iniciar o programa
		usuario.addFocusListener(this);//adicionado o evento FocusListener
		p.add(usuario);//adicionado a caixa de texto ao painel que se encontra no container 

		password=new JPasswordField();//criando um caixa de texto
		password.setBounds(90,80,160,20);//posiçao onde ficara essa caixa de texto
		password.setEchoChar('*');//dando uma mascara utilizando um caracter qdo digitar senha
		password.addFocusListener(this);//adicionado o evento FocusListener
		p.add(password);//adicionado a caixa de texto ao painel que se encontra no container
		
		//adicionando separadores no container
		s=new JSeparator(1);
		s.setBounds(10,10,10,125);
		p.add(s);
		
		s=new JSeparator(1);
		s.setBounds(300,10,10,125);
		p.add(s);
		
		s=new JSeparator(0);
		s.setBounds(10,9,290,10);
		p.add(s);
		
		s=new JSeparator(0);
		s.setBounds(10,135,290,10);
		p.add(s);
		c.add(p);
		
		botok=new JButton("OK");//criando um botão OK
		botok.setBounds(320,25,75,25);//posição onde ficara o botao
		botok.setBackground(new Color(212,208,200));//atribuindo cor ao botao
		botok.setMnemonic(KeyEvent.VK_O);//criando teclas de atalho
		botok.setEnabled(false);//desabilitando o botao
		botok.addActionListener(this);//adiciodando o evento ActionListener
		c.add(botok);//adicionando o botao as container
		
		botlimpar=new JButton("Limpar");//criando um botão Limpar
		botlimpar.setBounds(320,65,75,25);//posição onde ficara o botao
		botlimpar.setBackground(new Color(212,208,200));//atribuindo cor ao botao
		botlimpar.setMnemonic(KeyEvent.VK_L);//criando teclas de atalho
		botlimpar.addActionListener(this);//adiciodando o evento ActionListener
		c.add(botlimpar);//adicionando o botao as container
				
		
		show();//metodo de exibição na tela
	}
		
	public static void main(String []args)
	{             //traz aparecia do windows
		try
		{
			UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
		}
		catch(Exception e)
		{
		}
		Login l=new Login();//criação do objeto da classe Login
	}
}
G

cara, muito obrigado, era isso mesmo… só nao sabia q poderia implementar o metodo sem nada…heheheheheh

valeu
GAbriel

Criado 22 de março de 2005
Ultima resposta 22 de mar. de 2005
Respostas 5
Participantes 3