概述

Swing控件中没有日期时间选择控件,在gitee中下载了一个别人封装的日期时间选择弹窗控件。

网址:https://gitee.com/mkk/jcalendarchooser


  • Maven安装到本地仓库:
# 注意:windows下需在CMD窗口执行命令
mvn install:install-file -Dfile=C:/Users/gzw/Desktop/calendar.jar -DgroupId=com.zkfr -DartifactId=swing-calendar -Dversion=1.0 -Dpackaging=jar -DgeneratePom=true

Pom

<dependency>
	<groupId>com.zkfr</groupId>
	<artifactId>swing-calendar</artifactId>
	<version>1.0</version>
</dependency>

实际使用

原理:时间显示用 JTextField,然后JTextField绑定鼠标点击事件,弹出日期时间选择控件窗口,关闭该窗口后,返回Calendar类对象,然后将Calendar的日期时间以字符串方式赋值给JTextField即可。

部分代码如下:

# 1. 定义JTextField
m_txtDtBegin = new JTextField(DateTime.now().withMinuteOfHour(0).toString(DT_FORMAT_MIN) );
m_txtDtBegin.setBorder( new EmptyBorder( 0, 5, 0, 0 ) );
m_txtDtBegin.setPreferredSize( new Dimension( 120, height ));
m_txtDtBegin.setEnabled( false );

# 2. 绑定鼠标点击事件
m_txtDtBegin.addMouseListener(new MouseAdapter()
        {
            @Override
            public void mouseClicked(MouseEvent e)
            {
                super.mouseClicked(e);
                onTxtBeginTimeClicked();
            }
        });


# 3. 使用日期时间控件弹窗设置时间
private void onTxtBeginTimeClicked()
{
	JTimeChooser timeChooser = new JTimeChooser(this);
	Calendar calendar = timeChooser.showTimeDialog();

	m_txtDtBegin.setText( new DateTime(calendar.getTime()).toString(DT_FORMAT_MIN) );
}
时间显示用