【问题标题】:How to check if a jFormattedTextField is empty?如何检查 jFormattedTextField 是否为空?
【发布时间】:2021-10-13 02:23:57
【问题描述】:

我看到了一些关于这个的类似问题,但是,他们似乎都没有在这里帮助我。

我有一个带有此掩码“##-##-####”的 jFormattedTextField,并且我使用 dd-MM-yyyy 将日期发送到 PostgreSQL,此字段用于出生日期。

当我使用普通的 jTextfield 并且用户必须输入“/”或“-”来分隔日、月和年时,可以检查它是否为空,但是,在打开掩码的情况下,我无法检查。

else if (jFormattedTextFieldDATA.getText().equals(""))
                {
                    JOptionPane.showMessageDialog(null,"Por favor completar o campo Data"); //please complete date field

            try {
                conecta.conn.setAutoCommit(false);
                conecta.conn.rollback();
            } catch (SQLException ex) {
                Logger.getLogger(Pessoa.class.getName()).log(Level.SEVERE, null, ex);
            }

而且,这就是 netbeans 说错误的地方:

SimpleDateFormat formatter  = new SimpleDateFormat ("dd-MM-yyyy");
        java.util.Date utilDate = null;
                try {
                    utilDate = formatter.parse(jFormattedTextFieldDATA.getText());
                } catch (ParseException ex) {
                   Logger.getLogger(Pessoa.class.getName()).log(Level.SEVERE, null, ex);
                }
        java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
        pst.setDate(5, sqlDate);
        pst.executeUpdate(); //executa o SQL

这是从 netbeans 得到的:

java.lang.NullPointerException:无法调用“java.util.Date.getTime()”,因为“utilDate”为空

【问题讨论】:

  • 记录器语句(用于formatter.parse)显示什么
  • 所以在catch (ParseException ex) 之后可以继续吗?
  • 我得到这个 java.text.ParseException: Unparseable date: " - - "
  • 我建议打电话给getValue 而不是getText ...检查是否是null
  • 回答catch (PaserException ex) 是的,可以继续,如果我能得到空字段

标签: java jformattedtextfield


【解决方案1】:

JFormattedTextField 应该已经配置了 SimpleDateFormatter,它将对文本进行解析/格式化/验证。

在这种情况下,您应该使用getValue 而不是getText

java.util.Date utilDate = jFormattedTextFieldDATA.getValue();
if (utilDate != null) {
    java.sql.Date sqlDate = new java.sql.Date(utilDate.getTime());
    pst.setDate(5, sqlDate);
} else {
    // I don't know what you want to do in this case...
}
pst.executeUpdate(); //executa o SQL

【讨论】:

  • 好的,我试过了,效果很好,像手套一样合身,但是,我需要向用户显示他不会害怕的信息。谢谢
猜你喜欢
  • 2012-09-01
  • 1970-01-01
  • 2017-11-15
  • 2020-05-29
  • 2018-04-02
  • 2016-04-05
  • 2018-01-08
  • 2020-09-25
  • 2012-01-15
相关资源
最近更新 更多