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