Swing应用开发实战系列之二:设计日期选择面板窗口

 

Swing本身没有提供什么华丽丽的日期时间选择控件,所以笔者就在网上搜了个第三方的jar包jdatepicker-1.3.2.jar,基于此设计了个很轻量的日期选择面板,很简单的。效果图如下所示:

代码如下:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.text.SimpleDateFormat;
import java.util.Date;
import javax.swing.JDialog;
import javax.swing.JPanel;
import javax.swing.JTextField;
import net.sourceforge.jdatepicker.JDateComponentFactory;
import net.sourceforge.jdatepicker.JDatePanel;
import net.sourceforge.jdatepicker.impl.UtilDateModel;
/**
 * Description:日期选择面板窗口<br>
 * Copyright: Copyright (c) 2015<br>
 * Company: 河南电力科学研究院智能电网所<br>
 * @author shangbingbing 2015-01-01编写
 * @version 1.0
 */
public class DialogDatePicker extends JDialog {
    private static final long serialVersionUID = 1L;
    /**
     * 弹出日期选择窗口
     * @param modal 是否是模态窗口
     * @param txtSelectedDate 日期内容接收文本框
     * @param screenX 显示X点坐标
     * @param screenY 显示Y点坐标
     */
    public DialogDatePicker(boolean modal, final JTextField txtSelectedDate,int screenX,int screenY) {
        final JDatePanel jp = JDateComponentFactory.createJDatePanel(new UtilDateModel(new Date()));
        jp.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent e) {
                if(txtSelectedDate != null) {
                    try{
                        txtSelectedDate.setText(new SimpleDateFormat("yyyy-MM-dd").format(jp.getModel().getValue()));
                    } catch (Exception ex) {
                        txtSelectedDate.setText("");
                    }
                }
            }
        });
        JPanel pnl = (JPanel)jp;
        this.add(pnl);
        this.setTitle("选择日期");
        this.setResizable(false);
        this.setModal(modal);
        this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
        this.setBounds(screenX, screenY, 300, 300);
        this.setVisible(true);
    }

    public static void main(String[] args) {
        JTextField txtDate = new JTextField();
        new DialogDatePicker(true,txtDate,300,400);
        System.out.println(txtDate.getText());
    }
}

 

【完】

作者:商兵兵

单位:河南省电力科学研究院智能电网所

QQ:52190634

主页:http://www.cnblogs.com/shangbingbing

空间:http://shangbingbing.qzone.qq.com

时间: 2024-10-18 03:58:03

Swing应用开发实战系列之二:设计日期选择面板窗口的相关文章

Swing应用开发实战系列之一:自定义JdbcTemplate

  笔者本人真正意义上接触编程开发是在2004年,最早用的就是VB,然后是Delphi等,后来转到.Net,中间断断续续还用过PowerBuilder等,无一例外,所研发设计的项目或系统都是WinForm应用程序,基于C/S模式的窗口应用程序开发那个时候还是正道,而Web开发还没有现在这么红火,技术也没有现在这么多姿多彩. 后来,B/S技术日渐成熟起来,jquery.node.js.flex.spring.structs.hibernate等技术框架相继涌现出来,进行Web开发的门槛降了下来,开

Swing应用开发实战系列之五:后台日志信息前台监控器

作为一个程序设计人员,我们深知日志的重要性,对于日志的监控,我们通常不外乎采用以下两种方式:日志文件方式和后台打印方式,常规情况下,这两种日志监控方式完全可以满足我们对日志监控的需要.但是,当我们用Swing进行前台开发时,常常想能不能把后台服务运行日志实时地显示在前台窗口中,或者只是将某类我们比较关心的日志信息(譬如异常日志等)实时动态地显示在前台窗口中,这样方便我们及时监控和处理.这个设想我们称之为“后台日志信息前台监控器”. 设计这样一个“后台日志信息前台监控器”,有两个难点,第一个是,当

Swing应用开发实战系列之三:动态信息提示窗口

  这里所说的"动态信息提示窗口"可不同于JOptionPane中的Message窗口和Confirm窗口,它们都是静态的模态的,更重要的是线程阻塞的,迫使你必须选择某个动作才能继续执行.我们接下来要分享的这个动态信息提示窗口,重点就是信息是动态的且实时刷新显示的,我们设想这样一个应用场景,当我们要向数据库中写入10000条记录时,这肯定是一个颇为耗时的工作,很有必要在前台界面中实时地告知用户数据写入进度,并在写入完成后,自动隐藏提示窗口. 首先,设计信息提示窗体,调整到适当大小,并将

WCF 开发实战系列 (一)

也许有读者会说,为什么要谈 WCF?近期不是 Web API 比较热门?在这个手机.Devices 当道的现在,究竟有什么地方会需要使用到 WCF 呢? 的确,现在访间你能找到的课程,或者您可能参与某项目的实践 (网页应用程序.手机 APP 也好),你需要的通常也都是提供 Services 层,而这个 Services 层通常也就是 Web API.那么,难道 WCF 就无用武之地?其实也不是,看什么情况用什么技术,有一些地方是 Web API 无法做到的 前言 也许有读者会说,为什么要谈 WC

AspNetCore-MVC实战系列(二)之通过绑定邮箱找回密码

AspNetCore - MVC实战系列目录 . 爱留图网站诞生 . AspNetCore - MVC实战系列(一)之Sqlserver表映射实体模型 . AspNetCore-MVC实战系列(二)之通过绑定邮箱找回密码 开篇唠嗑 本篇内容写在5.1假期前夕,主要是让大家能在节假日休息充点的时候能有好的干货例子,到目前为止netcore方面的实战例子分享即将进入正轨,谢谢各位朋友多多支持:最近工作安排的新项目即将开始,项目前期就我一人搭建,让我犹豫的是对于公司这个内部系统并且是初建的项目用什么开

大数据开发实战系列之电信客服(1)

大数据实战开发系列,以实战为主,辅以一些基础知识,关于电信客服,在网上也有很多的资料,这里我自然会去参考网上的资料,程序的整体设计是在今天开始的,老夫尽量在本周末钱结束这个电信客服的程序编写.因为我也是一个学习者,所以在程序编写过程中难免会存在问题,有问题还请大家指出,有则改之,无则加勉.大家共同进步.本教程适合接触大数据开发不久或者还没接触大数据开发,或者小萌新.老鸟就多提意见吧,我改. 博客原文地址:大数据开发实战系列之电信客服(1) 项目背景 关于项目背景,我就照搬网上的了.通信运营商每时

SCCM 2012 R2实战系列之二:前提工作准备

在上一篇中,我们完成了SQL Server 2012的安装和配置.现在跟大家分享SCCM安装前的准备工作. 2.1 SCCM 2012 R2 准备工作 2.1.1 创建并分配System Management容器权限 打开ADSI编辑器,连接到"默认命名上下文"---右击"system"新建对象---选择"container"-下一步---填写值"system management"---下一步---完成 分配System M

跨平台开发实战系列篇-开篇

本系列文章将带着你从React Native入门到精通React Native开发,包括大型电商项目实战.大型新闻项目实战(一套代码运行在iOS平台和Android平台).持续更新中...... 一.前言 React Native于F8大会开源,在短短不到一年的时间里,它成为手机端必不可少的开发模式之一. 它充分利用了Facebook现有的业务轮子, 其核心设计理念:既拥有Native的用户体验.又保留React的开发效率, 也就是"learn once,write everywhere&quo

MP实战系列(十二)之封装方法详解(续二)

继续MP实战系列(十一)之封装方法详解(续一)这篇文章之后. 此次要讲的是关于查询. 查询是用的比较多的,查询很重要,好的查询,加上索引如鱼得水,不好的查询加再多索引也是无济于事. 1.selectById()方法 演示示例: UserEntity user = ud.selectById(33); System.out.println(user.getEmail()); 简单的说明: 如果是在MyBatis中,需要再对应的xml编写这样的sql select column1,column2..