Foros del Web » Programación para mayores de 30 ;) » Java »

JTextField - ¿posible bug?

Estas en el tema de JTextField - ¿posible bug? en el foro de Java en Foros del Web. Buenas gente, espero esten bien. Veran, estoy añadiendo dos campos de texto y el problema es que se crean como dos campos por cada uno. ...
  #1 (permalink)  
Antiguo 12/06/2018, 04:35
 
Fecha de Ingreso: agosto-2015
Ubicación: Rosario - Argentina
Mensajes: 424
Antigüedad: 8 años, 8 meses
Puntos: 12
JTextField - ¿posible bug?

Buenas gente, espero esten bien.

Veran, estoy añadiendo dos campos de texto y el problema es que se crean como dos campos por cada uno.

Es decir, añado un campo de texto y ese campo al pulsar tab me manda el foco a otro campo que esta como por debajo o encima, es algo raro y queria saber como solucionarlo.

Aqui el code entero

MAIN
La clase frame solo crea una ventana, asi que ahorro en colocar esa clase.
Código Java:
Ver original
  1. package OOP;
  2. import java.awt.*;
  3. import javax.swing.JFrame;
  4. public class Main{
  5.     public static void main(String[] args){
  6.        
  7.         int w = 600;
  8.         int h = 350;
  9.         int x = (Toolkit.getDefaultToolkit().getScreenSize().width/2)-(w/2);
  10.         int y = (Toolkit.getDefaultToolkit().getScreenSize().height/2)-(h/2);
  11.         Image icon = Toolkit.getDefaultToolkit().getImage("src/favicon.png");
  12.         Frame MyFrame = new Frame(x, y, w, h, "My First Java Windows", icon, JFrame.EXIT_ON_CLOSE);
  13.        
  14.         TextsFields Texts = new TextsFields();
  15.        
  16.         MyFrame.add(Texts);
  17.        
  18.         MyFrame.setVisible(true);
  19.        
  20.     }
  21. }

Aqui la clase de los textos.
Código Java:
Ver original
  1. package OOP;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5.  
  6. public class TextsFields extends JPanel{
  7.  
  8.     public JTextField TextField1;
  9.     public JTextField TextField2;
  10.     public Graphics G;
  11.    
  12.     public void paintComponent(Graphics G){
  13.  
  14.         super.paintComponent(G);
  15.         this.setLayout(null);
  16.        
  17.         this.G = G;
  18.        
  19.         TextField1 = new JTextField();
  20.         TextField2 = new JTextField();
  21.         listener list = new listener();
  22.        
  23.         TextField1.setBounds(20, 20, 150, 30);
  24.         TextField2.setBounds(20, 60, 150, 30);
  25.    
  26.         TextField1.addFocusListener(list);
  27.         TextField2.addFocusListener(list);
  28.        
  29.         this.add(TextField1);
  30.         this.add(TextField2);
  31.    
  32.     }
  33.    
  34.     class listener extends FocusAdapter implements FocusListener{
  35.  
  36.         @Override
  37.         public void focusLost(FocusEvent e){
  38.            
  39.             String Sequence = "@";
  40.             String Value = TextField1.getText();
  41.             boolean check = false;
  42.            
  43.             for(int i = 0; i < Value.length(); i++){
  44.            
  45.                 if(Value.charAt(i) == Sequence.charAt(0)){
  46.                     check = true;
  47.                 }
  48.            
  49.             }
  50.            
  51.             if(check){
  52.                 System.out.println("Success Email.");
  53.             }else{
  54.                 System.out.println("Failed Email.");
  55.             }
  56.            
  57.         }
  58.  
  59.     }
  60.  
  61. }

Espero me ayuden, ya que ando en el curso de java donde cada vez se pone mas interesante y comenzamos a utilizar mucho los campos de textos, botones, etc..

Desde ya, gracias!
  #2 (permalink)  
Antiguo 12/06/2018, 20:08
Avatar de detective_jd  
Fecha de Ingreso: abril-2011
Ubicación: Salto
Mensajes: 437
Antigüedad: 13 años
Puntos: 6
Respuesta: JTextField - ¿posible bug?

Hola, ¿cómo estás? solucioné tu problema:

Resulta que tu listener nunca trabajaba con la caja de texto que perdía el foco, para solucionarlo necesitas esto:

Código Java:
Ver original
  1. class listener extends FocusAdapter implements FocusListener{
  2.         @Override
  3.         public void focusLost(FocusEvent e){
  4.             JTextField c = (JTextField) e.getSource();
  5.             String Sequence = "@";
  6.             String Value = c.getText();
  7.             boolean check = false;            
  8.             for(int i = 0; i < Value.length(); i++){            
  9.                 if(Value.charAt(i) == Sequence.charAt(0)){
  10.                     System.out.println("me encontré en la posicion: " + i);
  11.                     check = true;
  12.                 }            
  13.             }            
  14.             if(check){
  15.                 System.out.println("Success Email.");
  16.             }else{
  17.                 System.out.println("Failed Email.");
  18.             }            
  19.         }
  20.     }

Lo probé y me anduvo, espero que te sirva. Saludos.
__________________
Si te interesa, visita mi perfil de Linkedin. Gracias

Etiquetas: jpa, jtextfield, posible
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:47.