Buenas a tod@s ! Tengo una duda respecto al código que comparto. ¿Por qué no funciona si lo pongo dentro (en el constructor) de public void paintComponent(Graphics g)? Solo funciona si dejo los setBounds, pero si dejo alguna otra instrucción ya no funciona. Muchas gracias.
package graficos;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class FocoEvento {
public static void main(String[] args) {
// TODO Auto-generated method stub
MarcoFoco miMarco = new MarcoFoco();
miMarco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
class MarcoFoco extends JFrame{
MarcoFoco (){
setTitle("Marco Foco");
setBounds(300, 300, 600, 450);
setVisible(true);
add(new LaminaFoco());
}
}
class LaminaFoco extends JPanel{
public LaminaFoco(){
setLayout(null);
cuadro1=new JTextField();
cuadro2=new JTextField();
cuadro1.setBounds(220, 10, 150, 20);
cuadro2.setBounds(220, 50, 150, 20);
add(cuadro1);
add(cuadro2);
LanzaFocos elFoco = new LanzaFocos();
cuadro1.addFocusListener(elFoco);
}
public void paintComponent(Graphics g){
super.paintComponent(g);// Invocamos al método paintComponent de JComponent para que haga su trabajo cuando lo programagron en su día.
//En este ejemplo funcionaría igual aunque no estuviera.
//setLayout(null);
/*cuadro1=new JTextField();
cuadro2=new JTextField();
cuadro1.setBounds(220, 10, 150, 20);
cuadro2.setBounds(220, 50, 150, 20);
add(cuadro1);
add(cuadro2);
LanzaFocos elFoco = new LanzaFocos();
cuadro1.addFocusListener(elFoco);*/
}
private JTextField cuadro1;
private JTextField cuadro2;
private class LanzaFocos implements FocusListener{
@Override
public void focusGained(FocusEvent e) {
// TODO Auto-generated method stub
}
@Override
public void focusLost(FocusEvent e) {
// TODO Auto-generated method stub
String email = cuadro1.getText();
boolean comprobacion = false;
for(int i = 0; i<email.length(); i++){
if (email.charAt(i)=='@'){
comprobacion=true;
}
}
if(comprobacion){
System.out.println("El email es correcto");
}
else{
System.out.println("El email es incorrecto");
}
}
}
}