Старый вопрос, но, как правило, хорошая идея - создать вспомогательный метод проверки, который сначала выполняет всю проверку, а затем, если он проверит, вы можете загрузить все значения во все, что вы делаете (переменные, атрибуты класса длянапример,
например:
private class createAccountListener implements ActionListener
{
public void actionPerformed(ActionEvent ae)
{
// first we validate all fields... if they pass, we do
// the rest of the code, otherwise we let the failed validation
// code tell user what happened, and skip the rest of the code
if ( validateFields() )
{
String fname = fieldFirstName.getText();
String lname = fieldFirstName.getText();
int age = fieldAge.getText();
}
}
}
// test all text fields for input
public boolean validateFields()
{
if (! validateField( fieldFirstName, "Please enter a first name")
return false;
else
if (! validateField( fieldLastName, "Please enter a last name")
return false;
else
if (! validateInteger( fieldAge, "Please enter an age greater then 0")
return false;
else
return true;
}
// test if field is empty
public boolean validateField( JTextField f, String errormsg )
{
if ( f.getText().equals("") )
return failedMessage( f, errormsg );
else
return true; // validation successful
}
public boolean validateInteger( JTextField f, String errormsg )
{
try
{ // try to convert input to integer
int i = Integer.parseInt(f.getText());
// input must be greater then 0
// if it is, success
if ( i > 0 )
return true; // success, validation succeeded
}
catch(Exception e)
{
// if conversion failed, or input was <= 0,
// fall-through and do final return below
}
return failedMessage( f, errormsg );
}
public boolean failedMessage(JTextField f, String errormsg)
{
JOptionPane.showMessageDialog(null, errormsg); // give user feedback
f.requestFocus(); // set focus on field, so user can change
return false; // return false, as validation has failed
}