java - JAVA 中的格式化文本字段和日期时间

标签 java swing datetime jformattedtextfield

在 JAVA 中启动程序后,我如何自动将当前系统日期作为 "YYYY-MM-DD HH:MM:SS" 写入格式化文本字段?

实际上我有两个格式化的文本字段。其中之一必须显示当前系统日期 - 5 Min 必须在程序启动后显示当前系统日期。

当我运行这个程序时,Jpanel 出现了。我在这个面板中有这 2 个格式化的文本字段。

左一个:必须显示当前系统日期 - 5min (2013-12-22 21:00:00.000)

右一:必须显示当前系统日期(2013-12-22 21:05:00.000)

我如何编写代码以自动将此值显示到字段?

P.S:对不起,我没有附上图片,因为我还没有 10 个代表 :(

最佳答案

您可以使用 SimpleDateFormat使用当前时间设置文本字段的文本

    Date date = new Date();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String dateString = formatter.format(date);
    formatText = new JFormattedTextField(createFormatter("####-##-## ##:##:##"));
    formatText.setColumns(20);
    formatText.setText(dateString);

如果需要获取输入文本的日期值,解析即可。

   Date date;
   try {
       date = formatter.parse(formatText.getText());
   } catch (ParseException ex) {
       ...
   }

要将字段设置为可编辑的所需格式,您可以使用 MaskFormatter .看我的例子。它运行

import java.awt.BorderLayout;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.text.MaskFormatter;

public class MaskFormatterTest1 extends JPanel {

    private JFormattedTextField formatText;

    public MaskFormatterTest1() {
        Date date = new Date();
        SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
        String dateString = formatter.format(date);
        formatText = new JFormattedTextField(createFormatter("####-##-## ##:##:##"));
        formatText.setColumns(20);
        formatText.setText(dateString);

        setLayout(new BorderLayout());
        add(new JLabel("Enter Date and Time in YYYY-MM-DD HH:MM:SS format"), BorderLayout.NORTH);
        add(formatText, BorderLayout.CENTER);
    }

    private MaskFormatter createFormatter(String s) {
        MaskFormatter formatter = null;
        try {
            formatter = new MaskFormatter(s);
        } catch (java.text.ParseException exc) {
            System.err.println("formatter is bad: " + exc.getMessage());
            System.exit(-1);
        }
        return formatter;
    }

    public static void main(String[] args) {
        javax.swing.SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JFrame frame = new JFrame("MaskFormatter example");
                frame.add(new MaskFormatterTest1());
                frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                frame.setLocationByPlatform(true);
                frame.pack();
                frame.setVisible(true);
            }
        });
    }
}

enter image description here

关于java - JAVA 中的格式化文本字段和日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20733014/

相关文章:

java - Android:Listview 长按上下文菜单问题

java - Java 8 和 JUnit 5 的 Maven 构建失败

java - 使用现有 Controller 在 Spring Boot 中计划任务

Java:是否可以(在运行时)获取 future 方法调用的源文件名和行号?

asp.net-mvc-3 - 使用FluentValidator验证DateTime

java - 通过 XSLT 将 XML 节点中的 HTML 转义为 XSL-FO

java - 使 2 个 JButtons 大小相等

Java 使用单独的类移动图像

mysql - Doctrine 查询生成器,按生日过滤(使用 DateTime)?

python - 如何将 Pandas DateTime Quarter 对象转换为字符串