当前位置: 首页 > 知识库问答 >
问题:

如果JTextField中有数字,则捕获

洪永长
2023-03-14

我尝试了很多方法,但仍然不起作用。我试图捕捉JTextfield中是否有数字,它将使字符串文本变为红色,并弹出该选项。但我的代码只有在两个JTextfield中都有数字时才会被捕获。我希望我的JTextField只有字符和空格。

(jtf2和jtf3是JTextField)

if(ae.getSource() == bcreate) // create
{
    String firstname;
    String lastname;
    String id;
    firstname = jtf2.getText();
    lastname = jtf3.getText();
    try
    {
        Integer.parseInt(jtf2.getText());
        jtf2.setForeground(Color.RED);

        Integer.parseInt(jtf3.getText());
        jtf3.setForeground(Color.RED);
        JOptionPane.showMessageDialog(null, "Please enter valid character","ERROR",JOptionPane.ERROR_MESSAGE);
    }
    catch(NumberFormatException w)
    {
        create(firstname, lastname);
        jtf3.setForeground(Color.black);
        jtf2.setForeground(Color.black);

        id = Integer.toString(e.length); 
        current = Integer.parseInt(id);

        jta.setText("Employee #" + id + " " + firstname + " " + lastname + " was created.");
    }
}

共有1个答案

黄兴业
2023-03-14

这不是检查代码中数字的正确方法。异常是针对异常条件的。这里我们正在利用它并在异常中运行主代码。相反,您应该使用正则表达式检查文本是否包含任何数字。如下所示:

String firstname = jtf2.getText();
String lastname = jtf3.getText();
String id;


boolean isInvalidText = false;

if(firstname.matches(".*\\d.*")) {
  jtf2.setForeground(Color.RED);
  isInvalidText = true;
}

if(lastname.matches(".*\\d.*")) {
  jtf3.setForeground(Color.RED);
  isInvalidText = true;
}

if(isInvalidText) {
  JOptionPane.showMessageDialog(null, "Please enter valid character","ERROR",JOptionPane.ERROR_MESSAGE);
} else {
   create(firstname, lastname);
   jtf3.setForeground(Color.black);
   jtf2.setForeground(Color.black);


   id = Integer.toString(e.length); 
            
   current = Integer.parseInt(id);

   jta.setText("Employee #" + id + " " + firstname + " " + lastname + " was created.");

}
 类似资料:
  • 问题内容: 例如,需要使用 字符串找出只读取字符串中 数字 的方法, 即 我的尝试 问题答案: 试试这个: 由于返回的是文本数组,因此您应该通过来访问第一个元素。

  • 问题内容: 如何限制在JTextField中输入的字符数? 假设我要输入最多5个字符。此后,不能输入任何字符。 问题答案: 然后 (谷歌的第一个结果)

  • 问题内容: 请看下面的代码。 在这里,我试图将字符数限制为5。好,当达到5时,它将不再插入任何字符,但实际情况是,它也不允许删除插入的字符,进行替换或其他操作。如何解决这个问题? 问题答案: 只需更改您当前的删除方法: 为此: 现在应该可以了。

  • 我从S3下载一个文件,如下所示: 就目前而言,它总是有效的。但是,我想添加一些错误处理。如果下载失败,我如何检查或获取错误消息。我怎么知道出了什么事? boto3是否提供任何错误处理功能? 我读到:检查S3下载是否成功完成,但我正在寻找替代方案。

  • 问题内容: 我想设置一个最大长度,以使你输入的字符不能超过限制。这是我到目前为止的代码… 有什么简单的方法可以限制字符数? 问题答案: 你可以执行以下操作(从此处获取): 编辑:看看这个以前的SO职位。你可以拦截按键事件,并根据文本字段中的当前字符数添加/忽略它们。

  • 我试图解决这个问题,我需要根据数字在控制台上打印true或false(如果数字是素数,则为true,如果不是素数,则为false)。我似乎有解决方案,但我知道有一个错误的地方,因为我得到不同的答案,如果我改变布尔值的2个是素数变量。 这里有一个问题:如果num是素数,则返回true,否则返回false。 我的代码: