java:判断在JTextField中输入的是否是7位数字

2024-11-18 06:40:58
推荐回答(4个)
回答1:

import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class JTFDemo extends JFrame {
    public static void main(String[] args) {
        new JTFDemo();
    }
    public JTFDemo() {
        this.setSize(600, 450);
        this.setDefaultCloseOperation(EXIT_ON_CLOSE);
        initPanel();
        this.setVisible(true);
    }
    private void initPanel() {
        this.setLayout(new FlowLayout(FlowLayout.CENTER, 40, 40));
        final JTextField textField = new JTextField(20);
        JButton button = new JButton("提交");
        button.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent e) {
                if (textField.getText().matches("\\d{7}")) {
                    showMessage("输入正确,你的输入是" + textField.getText());
                } else {
                    showMessage("请输入7位数字");
                }
            }
            private void showMessage(String message) {
                JOptionPane.showMessageDialog(getRootPane(), message);
            }
        });
        add(textField);
        add(button);
    }
}

给你做参考。

回答2:

我不得不喷你一下啊。你看的条件。textField_1.getText().length()!=7&&textField_1.getText().matches("\\d*")。假如我的字符串是abc首先不合法7位这是没问题的,关键你用了&&。abc显然不符合,这个&&是两个都不符合才打印,显然是只要一个不对就打印。而且*也是代表人一个1cbdcef也符合的,所以你这判断问题太多,下面基本同理,直接String regx = "\d{7}";
if(!Pattern.matches(regx,textField_1.getText()))JOptionPane.showMessageDialog(null,"请输入7位数字",
null, JOptionPane.ERROR_MESSAGE);;不就行了??

回答3:

方法1逻辑有问题,应该是长度不为7或者字符串不匹配\\d*,修改方法为if(textField_1.getText().length()!=7||!textField_1.getText().matches("\\d*"));
方法2匹配正则表达式的条件返回false,应该修改为不匹配正则表达式返回false,修改方法为if(!Pattern.compile("[0-9]*").matcher(str).matches())。

附:正则表达式^[0-9]{7}$表示长度为7的以0-9开始、以0-9结束的字符串。

回答4:

建议用正则把内容变为char数组