Ver Mensaje Individual
  #2 (permalink)  
Antiguo 26/07/2016, 09:39
miguel_tarsisoft
 
Fecha de Ingreso: enero-2016
Mensajes: 3
Antigüedad: 8 años, 3 meses
Puntos: 0
Respuesta: Filtros en JavaSE

Código:
import java.awt.GridLayout;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.event.DocumentEvent;
import javax.swing.event.DocumentListener;
import javax.swing.text.BadLocationException;
 

public class Ejm07_EventoTextFieldChanged extends JFrame{
 
    private JTextField txtEjemplo;
    private JLabel lblEjemplo;
    private String texto;
 
    public Ejm07_EventoTextFieldChanged()
    {
        txtEjemplo=new JTextField();
        lblEjemplo=new JLabel();
        this.add(txtEjemplo);
        this.add(lblEjemplo);
        this.setLayout(new GridLayout(1,1));
        this.setSize(400, 80);
        texto = "María Antonieta";
        lblEjemplo.setText(texto);
 
        setJTexFieldChanged(txtEjemplo);
    }
    
    
 
    private void setJTexFieldChanged(JTextField txt)
    {
// Esto seria opcional funciona similar a lo que tu escribiste
    	txt.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
            	txtEjemploJTextFieldChanged();
            }
        });
    }
 
 
    private void txtEjemploJTextFieldChanged()
    {
        
    	System.out.println(txtEjemplo.getText());
    	System.out.println(texto.indexOf(txtEjemplo.getText()));
    	if(texto.indexOf(txtEjemplo.getText()) == -1){
    		lblEjemplo.setText("");
    	}else{
    		lblEjemplo.setText("María Antonieta");
    	}
        //this.lblEjemplo.setText(this.txtEjemplo.getText());
    	
    }
 
    public static void main(String args[]) {
        Ejm07_EventoTextFieldChanged obj = new Ejm07_EventoTextFieldChanged();
        obj.setVisible(true);
    }
}
El problema esta en:
Código:
if(lblEjemplo.getText().indexOf(txtEjemplo.getText()) == -1){
    		lblEjemplo.setText("");
    	}else{
    		lblEjemplo.setText("María Antonieta");
    	}
        //this.lblEjemplo.setText(this.txtEjemplo.getText());
    	
    }
cuando sale un -1 se borra el jLabel (lblEjemplo), entonces cuando intenta de nuevo el valor del jLabel seria "" por que cambio en la ultima consulta y al hacer de nuevo la comparacion siempre devolvera -1 hasta que el valor del jTextField sea ""

*Posible solucion esta en crear una variable que contenga el texto con el valor del jLabel (lblEjemplo)
Código:
    private String texto;
y darselo al jLabel (lblEjemplo)
Código:
        texto = "María Antonieta";
        lblEjemplo.setText(texto);
ahora en ves de usar indexOf para el jLabel (lblEjemplo), usarlo con la variable texto
Código:
if(texto.indexOf(txtEjemplo.getText()) == -1){
    		lblEjemplo.setText("");
    	}else{
    		lblEjemplo.setText("María Antonieta");
    	}