Cita:
Iniciado por miguel_tarsisoft
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)
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");
}
Miguel!! Mil gracias...exactamente era ese el problema. Realmente me siento fatal el no haberme dado cuenta de ese problema antes...Ahora el tema es trasladar y sustituir el texto "Maria Antonieta" por un JList con nombres, pero de eso ya me encargo yo.
Muchisimas gracias :)