protected void processFocusEvent(FocusEvent e) { boolean lbContinuar = true; int id = e.getID(); switch (id) { case FocusEvent.FOCUS_GAINED: super.setText(moTipo.getText()); moBackColor = getBackground(); setBackgroundP(moBackColorConFoco); setSelectionStart(0); setSelectionEnd(moTipo.getText().length()); break; case FocusEvent.FOCUS_LOST: setBackgroundP(moBackColor); String lsTexto = super.getText(); if (moTipo.isTipoCorrecto(lsTexto)) { moTipo.lostFocus(lsTexto); super.setText(moTipo.getTextFormateado()); } else { lbContinuar = !moTipo.isTipoCorrectoObligatorio(); if (lbContinuar) { moTipo.lostFocus(lsTexto); super.setText(moTipo.getTextFormateado()); } utilesGUI.msgbox.JDialogo.showDialog(null, moTipo.getTextoError(lsTexto)); } // anulamos la seleccion para que solo haya un campo con todo seleccionado if (lbContinuar) { setSelectionStart(0); setSelectionEnd(0); ponerColorSiCambio(); } break; default: } super.processFocusEvent(e); // no se hace esto pq en windows se mete en un bucle infinito // if(lbContinuar) // super.processFocusEvent(e); // else // this.requestFocus(); }
/** * Devuelve si el texto que hay en el componente es del tipo correcto, según mlTipo * * @return si es correcto */ public boolean isTipoCorrecto() { return moTipo.isTipoCorrecto(moTipo.getText()); }