trs trs - 7 months ago 13
Java Question

java: validating that all text fields in GUI are completed

I am trying to create a GUI that allows someone to set up an account. I would like to validate that all the text fields are complete when the create account button is pressed. What is the best way to do this? I am attaching my code but my validation that the text fields are complete is not working.

see code below:

public class GUIaccounts extends JFrame{

private JLabel name;
private JLabel initDeposit;
private JLabel chooseAccount;
private JLabel empty;
private JTextField nameTextField;
private JTextField initDepositTextField;
private JPanel dataPanel;
private JPanel accountTypePanel;
private JRadioButton savingsAccount;
private JRadioButton premiereChecking;
private ButtonGroup radioButtonGroup;
private JButton createAccountButton;
private JPanel createAccountPanel;
private Bank myBank;



public GUIaccounts(){
setTitle("Create an Account");
setSize(1000,1000);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
buildPanels();
setVisible(true);
pack();
setLocationRelativeTo(null);
myBank=new Bank();

}

private void buildPanels(){
//create the panels
dataPanel= new JPanel();
dataPanel.setLayout(new GridLayout(2,2));
accountTypePanel=new JPanel();
accountTypePanel.setLayout(new GridLayout(3,1));
createAccountPanel=new JPanel();
createAccountPanel.setLayout(new FlowLayout());
//create labels
name=new JLabel("Enter Name:");
Border border = LineBorder.createBlackLineBorder();
name.setBorder(border);
initDeposit=new JLabel("Enter Initial Deposit:");
initDeposit.setBorder(border);
chooseAccount=new JLabel("Choose Account:");
empty=new JLabel(" ");
//create text fields
nameTextField=new JTextField();
initDepositTextField=new JTextField();
//create buttons
savingsAccount = new JRadioButton("Savings Account");
premiereChecking =new JRadioButton ("Premiere Checking Account");
createAccountButton=new JButton("Create Account");
//add labels and field to the panel
dataPanel.add(name);
dataPanel.add(nameTextField);
dataPanel.add(initDeposit);
dataPanel.add(initDepositTextField);
//add button to the panel
accountTypePanel.add(chooseAccount);
accountTypePanel.add(empty);
accountTypePanel.add(savingsAccount);
accountTypePanel.add(premiereChecking);
createAccountPanel.add(createAccountButton);

//add actionListeners to the buttons
savingsAccount.addActionListener(new RadioButtonListener());
premiereChecking.addActionListener(new RadioButtonListener());
createAccountButton.addActionListener(new createAccountListener());
//add focus to the text field
nameTextField.addFocusListener(new nameFieldListener());
initDepositTextField.addFocusListener(new initDepositFieldListener());
//add panels to the contentPane
add(dataPanel, BorderLayout.NORTH);
add(accountTypePanel, BorderLayout.CENTER);
add(createAccountPanel, BorderLayout.SOUTH);
//group radio buttons
radioButtonGroup= new ButtonGroup();
radioButtonGroup.add(savingsAccount);
radioButtonGroup.add(premiereChecking);
}
private class createAccountListener implements ActionListener{
public void actionPerformed(ActionEvent e){
String name=null;
Double amount=null;
if (savingsAccount.isSelected()){
name=nameTextField.getText();
amount=Double.valueOf(initDepositTextField.getText());
if(name!=null && amount !=null){
try{

SavingsAccount account=new SavingsAccount(name,AccountIDs.getNextID(), amount);
myBank.addAccount(account);
JOptionPane.showMessageDialog(null,"Account setup was successful" + myBank.toString());
}



catch(Exception e1){
JOptionPane.showMessageDialog(null,"Unable to set up account. " +e1.getMessage());
}
}
else{
JOptionPane.showMessageDialog(null, "All fields must be completed in order to set up account");
}
}

else if(premiereChecking.isSelected()){
name=nameTextField.getText();
amount=Double.valueOf(initDepositTextField.getText());
if(name!=null && amount!=null){
try{
PremiereCheckingAccount account=new PremiereCheckingAccount(name, AccountIDs.getNextID(),amount);
myBank.addAccount(account);
JOptionPane.showMessageDialog(null,"Account setup was successful" +myBank.toString());
}
catch(Exception e1){
JOptionPane.showMessageDialog(null,"Unable to set up account. " + e1.getMessage());
}
}
else{
JOptionPane.showMessageDialog(null, "All fields must be completed in order to set up account");
}

}
else{
JOptionPane.showMessageDialog(null,"Please select the type of account you want to create.");
}
}
}
private class RadioButtonListener implements ActionListener{
public void actionPerformed(ActionEvent e){


}
}

private class nameFieldListener implements FocusListener{
public void focusGained(FocusEvent e){

nameTextField.selectAll();//highlight contents
}

public void focusLost(FocusEvent e){
}



}
private class initDepositFieldListener implements FocusListener{
public void focusGained(FocusEvent e){
initDepositTextField.selectAll();
}

public void focusLost(FocusEvent e) {


}
}



public static void main(String[]args){
GUIaccounts myAccount=new GUIaccounts();
}


}

Answer

The getText() method will not return null. It will return the empty String ("").

Your test should be something like:

if ( textField.getText().trim().length() == 0 )
  // error
Comments