Validando JTextField Vacios
Tengo este método para validar JTextField y funciona correctamente.
Hay alguna método mas elegante.
public boolean Vacio(){
boolean[] field = new boolean[4];
boolean r=false;
field[0]=getJTRazon().getText().isEmpty();
field[1]=getJTDireccion().getText().isEmpty();
field[2]=getJTChofer().getText().isEmpty();
field[3]=getJTPlaca().getText().isEmpty();
if(field[0] || field[1] || field[2] || field[3]){
r=true;
}else{
r=false;
}
return r;
}
Saludos bye
- Inicie sesión o regístrese para enviar comentarios
or, and
Si cualquiera de los 4 campos está vacío, el método devuelve true. Es lo que quieres? Si cambias los
||
por&&
entonces sólo devolvería true si TODOS los campos están vacíos.De cualquier manera, tratándose de tipos booleanos, el
if
sale sobrando, puedes asignar o devolver directamente lo que tienes como condición:Con eso te ahorras la variable
r
. Pero... sería mejor si solamente usas una variabler
y te deshaces del arreglo de booleans. Vas OR'eando cada valor que necesitas.r |= campo2.getText().isEmpty();
r |= campo3.getText().isEmpty();
//y así cuando tengas más campos simplemente agregas una línea por campo, o quitas una línea si ya no quieres validar un campo
return r;
Gracias entendido
ezamudio probare con esa refactorización
Saludos
si pero no es reutilisable
Hola queridos mejicanos
Qué pasa si tienes 4 campos de texto en otro formulario
Disculpa que mi código sea tan complicado pero es que soy un purista y detesto que mi código no sea reutilizable y además tuve que usar el patrón decorador para librarse del problema de la herencia múltiple por que supongo que mucha gente le gusta heredar de jpanel como yo para así tener paneles reutilizables que incluso son reconocidos por el ide
public static void main(String... arg) {
new FrmPrincipal().setVisible(true);
}
}
import javax.swing.JFrame;
public class FrmPrincipal extends JFrame {
private static final long serialVersionUID = 1L;
public FrmPrincipal() {
inisialisaComponetes();
}
private void inisialisaComponetes() {
agreagaPanelCentrado();
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setExtendedState(JFrame.MAXIMIZED_BOTH);
setLocationRelativeTo(null);
}
private void agreagaPanelCentrado() {
getContentPane().setLayout(new BorderLayout());
getContentPane().add(new PanCentral(), BorderLayout.CENTER);
}
}
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JTextField;
public class PanCentral extends FormularioSwing {
private static final long serialVersionUID = 1L;
private final JButton btnLimpiar;
public PanCentral() {
btnLimpiar = new JButton("limpiar");
inicialisaComponentes();
}
private void inicialisaComponentes() {
setLayout(new FlowLayout());
add(btnLimpiar);
for (int c = 1; c <= 100; c++) {
add(new JTextField("que pereza borrarlos todos"));
}
agreagaEventos(btnLimpiar);
}
private void agreagaEventos(JButton button) {
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent actionEvent) {
limpiarTodo();
}
});
}
}
public class FormularioSwing extends JPanel implements Formulario {
@Override
public void limpiarTodo() {
new DecoradorFormulario(this).limpiarTodo();
}
}
void limpiarTodo();
}
Pues en todo caso, mejor
Pues en todo caso, mejor creas una utilería, que reciba de parámetro el arreglo ( o collection ) de los campos, y et devuelve un booleano, así sólo ciclas lo que envíes como parámetro, y regresas un booleano...
varargs
Si estás usando Java 5+, puedes usar una construcción llamada varargs para pasar un número arbitrario de valores a un método. p.ej.:
if (isAnyEmpty(getJTRazon(), getJTDireccion(), getJTChofer(), getJTPlaca())) {
JOptionPane.showMessageDialog(this, "Faltan datos.");
}
for (JTextField textField : textFields) {
if (textField.getText().isEmpty()) {
return true;
}
}
return false;
}
Otra forma sería:
if (!isNoneEmpty(getJTRazon(), getJTDireccion(), getJTChofer(), getJTPlaca())) {
JOptionPane.showMessageDialog(this, "Faltan datos.");
}
for (JTextField textField : textFields) {
if (textField.getText().isEmpty()) {
return false;
}
}
return true;
}
~~~