java:验证 GUI 中的所有文本字段是否已完成

2024-05-08

我正在尝试创建一个允许某人设置帐户的 GUI。我想验证按下创建帐户按钮时所有文本字段是否完整。做这个的最好方式是什么?我正在附加我的代码,但我对文本字段是否完整的验证不起作用。

参见下面的代码:

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();
    }   

}


getText() 方法不会返回 null。它将返回空字符串(“”)。

你的测试应该是这样的:

if ( textField.getText().trim().length() == 0 )
  // error
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java:验证 GUI 中的所有文本字段是否已完成 的相关文章

随机推荐