如何确保JTextField仅包含字母? [英] How to make sure that JTextField contains only letters?
本文介绍了如何确保JTextField仅包含字母?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我只想在我的姓名字段中输入字母.
I want to take only letters as a input in my name field.
我已经尝试过使用matchs方法,但是不幸的是出了点问题,并且抛出了异常.
I have already tried using the matches method but unfortunately something is wrong and the exception is being thrown.
还有其他检查方法吗?
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!");
}
}
}
}
推荐答案
您可以尝试使用此正则表达式
You can try to use this regex
if(!uFName.matches("^[a-zA-Z]+$"))
这篇关于如何确保JTextField仅包含字母?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文