我只想在“我的姓名”字段中输入字母。
我已经尝试使用matches方法,但是不幸的是出现了一些错误,并且抛出了异常。
有没有其他方法来检查相同的问题?
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class CreateAccount extends JFrame implements ActionListener{
JPanel details = new JPanel(new GridBagLayout());
JLabel fName= new JLabel("First Name:");
JTextField firstNameField = new JTextField(10);
JLabel lName= new JLabel("Last Name:");
JTextField lastNameField = new JTextField(10);
JLabel initialDeposit = new JLabel("Initial Deposit: ");
JTextField initialDepositField = new JTextField(10);
String accountTypes[] = {"Savings","Current"};
JComboBox accountTypesComboBox = new JComboBox(accountTypes);
JLabel accountType= new JLabel("Account type: ");
JButton submit = new JButton("SUBMIT");
JButton review = new JButton("REVIEW");
Administrator admin = new Administrator();
User u[] = new User[admin.maxNumberOfUsers];
CreateAccount() {
buildGui();
setSize(400,300);
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void initialiseUserCount() {
admin.numberOfSavingsAccount = 0;
admin.numberOfCurrentAccount = 0;
admin.numberOfUsers=0;
}
public void buildGui() {
setTitle("New Account Form");
//JPanel submitPanel = new JPanel();
//submitPanel.add(submit);
GridBagConstraints c = new GridBagConstraints();
c.insets=new Insets(10,10,10,10);
// Stretch components horizontally (but not vertically)
c.fill = GridBagConstraints.HORIZONTAL;
// Components that are too short or narrow for their space
// Should be pinned to the northwest (upper left) corner
c.anchor = GridBagConstraints.NORTHWEST;
// Give the "last" component as much space as possible
c.weightx = 1.0;
c.gridx=0;
c.gridy=0;
details.add(fName,c);
c.gridx=1;
c.gridy=0;
details.add(firstNameField,c);
c.gridx=0;
c.gridy=1;
details.add(lName,c);
c.gridx=1;
c.gridy=1;
details.add(lastNameField,c);
c.gridx=0;
c.gridy=2;
details.add(initialDeposit,c);
c.gridx=1;
c.gridy=2;
details.add(initialDepositField,c);
c.gridx=0;
c.gridy=3;
details.add(accountType,c);
c.gridx=1;
c.gridy=3;
details.add(accountTypesComboBox,c);
c.gridx=0;
c.gridy=4;
details.add(submit,c);
c.gridx=1;
c.gridy=4;
details.add(review,c);
add(details);
firstNameField.addActionListener(this);
review.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==firstNameField) {
try {
String uFName = firstNameField.getText().toString();
if(!uFName.matches("[A-Za-z]+"))
throw new Exception();
}
catch(Exception e1) {
firstNameField.setText("");
JOptionPane.showMessageDialog(firstNameField,"Please enter a valid name!");
}
}
}
}
2条答案
按热度按时间64jmpszr1#
你可以试着用这个正则表达式
k3bvogb12#
使用
DocumentFilter
. 它将允许您对文本字段执行实时验证有关详细信息,请参见实现文档过滤器和文档过滤器示例
例如。。。
应用的方法是。。。