Boa Noite amigos1
Estou precisando fazer com que assim que um componente(JTextField ou JPasswotdField) tenha o focus faça alguma açao, a minha ideia foi criar um handle que implemente o ActionListener e o FocusListener para tratar alguns enventos conforme o codigo abaixo:
Obs: Criei um handle para os componentes a fim de que assim que o ouvinte receber um evento faça alguma coisa;
package Menu;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPasswordField;
import javax.swing.JTextField;
import javax.swing.SwingConstants;
import sun.applet.Main;
import java.awt.event.ActionEvent;
import java.awt.event.ActionEvent;
public class TextFieldFrame extends JFrame {
private JTextField textField1; // campo de texto com tamnho configurado
private JTextField textField2; // campo de texto construido com texto
private JTextField textField3; // campo de texto com texto e tamanho
private JPasswordField passwordField; // campo de senha com texto
private JLabel label1;
public TextFieldFrame() {
super("Testando JTextField e JPasswordField");
setLocation(250, 300);
setLayout(new FlowLayout()); // configura o layout de frame
label1 = new JLabel("Por favor, Coloque seu nome:");
label1.setToolTipText("Nome");
add(label1);
// constrói textField1 com 10 colunas
textField1 = new JTextField(10);
add(textField1); // adiciona textField1 ao JFrame
// Constrói textField2 e Define o texto padrão que sera exibido em
// textField2
textField2 = new JTextField("Informe um Texto Qualquer");
add(textField2);
// constrói textField3 com o texto padrão e 21 colunas
textField3 = new JTextField("Desativado Text Field", 21);
textField3.setEditable(false); // desativa a edição
textField3.setFocusable(false);
add(textField3);
// constrói passwordField com o texto padrão
passwordField = new JPasswordField("Texto Escondido");
add(passwordField);
TextFieldHandler handler = new TextFieldHandler();
textField1.addActionListener(handler);
textField2.addActionListener(handler);
textField3.addActionListener(handler);
passwordField.addActionListener(handler);
}
private class TextFieldHandler implements ActionListener, FocusListener {
// Este evento irá acontecer quando o componente tiver o focus
public void focusGained(FocusEvent ganhoDeFocus) {
if (ganhoDeFocus.getSource() == textField2) {
textField2.setText("");
//AQUI EU GOSTARIA QUE ASSIM QUE ESTE COMPONENTE RECEBESSE O FOCUS RECEBESSE O SET SETTEXT FICASSE COMO NULL , POREM DANDO O DEBUG ELE NEM ENTRA NO FOCUSGAINED
}
}
public void focusLost(FocusEvent perdaDeFocus) {
}
// Este evento abaixo irá ocorrer quando o usuário apertar enter
public void actionPerformed(ActionEvent evento) {
String m = "";
if (evento.getSource() == textField1) {
m = String.format("Olá meu nome é : %s", evento
.getActionCommand());
} else if (evento.getSource() == textField2) {
m = String.format("Seu nome é: %s", evento.getActionCommand());
} else if (evento.getSource() == passwordField) {
m = String.format("Sua senha é %s", evento.getActionCommand());
}
JOptionPane mensagem = new JOptionPane();
mensagem.showMessageDialog(null, m);
}
}
}
Quero consertar esta parte do codigo!
private class TextFieldHandler implements ActionListener, FocusListener {
// Este evento irá acontecer quando o componente tiver o focus
public void focusGained(FocusEvent ganhoDeFocus) {
if (ganhoDeFocus.getSource() == textField2) {
textField2.setText("");
//AQUI EU GOSTARIA QUE ASSIM QUE ESTE COMPONENTE RECEBESSE O FOCUS RECEBESSE O SET SETTEXT FICASSE COMO NULL , POREM DANDO O DEBUG ELE NEM ENTRA NO FOCUSGAINED
}
}
public void focusLost(FocusEvent perdaDeFocus) {
}
Abraços!