Java日期选择控件

Java Swing日期选择控件datepicker的实现教程 本文还有配套的精品资源,点击获取 简介:本文介绍了Java Swing中实现DatePicker控件的不同方法。首先,通过引入JCalendar库,可以直接在Swing应用中添加并使用DatePicker,包括添加依赖、导入类、创建实例、以及事件监听。其次,文章介绍了如何自定义DatePicker组件,涉及创建年月日的下拉列表、联动更新和合法性检查。此外,还探讨了使用Swi... 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> 一次项目研发中需要日期时间选择控件, 网上提供的不多, 且质量一般, 所以只好自己做,参考了 网上某位同学的 作品 Jave 日期选择控件 DateChooser 。 目前的代码将日期时间选择封装在一个按钮组件内, 应该很好用,支持Application 、Applet import java.util.Date; import java.util.Calendar; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.text.ParseException ; import java.awt.Color ; import java.awt.Font; import java.awt.Point ; import java.awt.Dimension ; import java.awt.BorderLayout ; import java.awt.FlowLayout ; import java.awt.GridLayout ; import java.awt.Component ; import java.awt.Cursor ; import java.awt.Frame ; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.MouseListener; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; //import javax.swing.JFrame; import javax.swing.JButton; import javax.swing.JDialog; import javax.swing.JPanel; import javax.swing.JLabel; import javax.swing.JSpinner ; import javax.swing.JSpinner.NumberEditor ; import javax.swing.SpinnerNumberModel; import javax.swing.SwingUtilities; import javax.swing.SwingConstants ; import javax.swing.event.ChangeListener ; import javax.swing.event.ChangeEvent ; import javax.swing.border.LineBorder ; public class DateChooserJButton extends JButton { private DateChooser dateChooser =null; private String preLabel ="" ; public DateChooserJButton() { this(getNowDate()) ; } public DateChooserJButton(SimpleDateFormat df , String dateString) { this() ; setText(df,dateString) ; } public DateChooserJButton(Date date) { this("",date); } public DateChooserJButton(String preLabel , Date date) { if (preLabel!=null) this.preLabel = preLabel ; setDate(date) ; setBorder(null) ; setCursor(new Cursor(Cursor.HAND_CURSOR)) ; super.addActionListener( new ActionListener() { public void actionPerformed(ActionEvent e) { if (dateChooser==null) dateChooser = new DateChooser(); Point p = getLocationOnScreen() ; p.y = p.y 30 ; dateChooser.showDateChooser(p) ; } }) ; } private static Date getNowDate() { return Calendar.getInstance().getTime() ; } private static SimpleDateFormat getDefaultDateFormat() { return new SimpleDateFormat("yyyy年MM月dd日HH时") ; } //覆盖父类的方法 public void setText(String s) { Date date ; try { date = getDefaultDateFormat().parse(s) ; }catch (ParseException e) { date = getNowDate() ; } setDate(date) ; } public void setText(SimpleDateFormat df , String s) { Date date ; try { date = df.parse(s) ; }catch (ParseException e) { date = getNowDate() ; } setDate(date) ; } public void setDate(Date date) { super.setText(preLabel getDefaultDateFormat().format(date)); } public Date getDate() { String dateString = getText().substring(preLabel.length()); try { return getDefaultDateFormat().parse(dateString); } catch (ParseException e) { return getNowDate() ; } } //覆盖父类的方法使之无效 public void addActionListener(ActionListener listener ) { } private class DateChooser extends JPanel implements ActionListener ,ChangeListener { int startYear = 1980; //默认【最小】显示年份 int lastYear = 2050; //默认【最大】显示年份 int width = 200; //界面宽度 int height = 200; //界面高度 Color backGroundColor = Color.gray; //底色 //月历表格配色----------------// Color palletTableColor = Color.white; //日历表底色 Color todayBackColor = Color.orange; //今天背景色 Color weekFontColor = Color.blue; //星期文字色 Color dateFontColor = Color.black; //日期文字色 Color weekendFontColor = Color.red; //周末文字色 //控制条配色------------------// Color controlLineColor = Color.pink; //控制条底色 Color controlTextColor = Color.white; //控制条标签文字色 Color rbFontColor = Color.white; //RoundBox文字色 Color rbBorderColor = Color.red; //RoundBox边框色 Color rbButtonColor = Color.pink; //RoundBox按钮色 Color rbBtFontColor = Color.red; //RoundBox按钮文字色 JDialog dialog ; JSpinner yearSpin ; JSpinner monthSpin ; JSpinner hourSpin ; JButton[][] daysButton = new JButton[6][7] ; DateChooser() { setLayout(new BorderLayout()); setBorder(new LineBorder(backGroundColor, 2)); setBackground(backGroundColor); JPanel topYearAndMonth = createYearAndMonthPanal(); add(topYearAndMonth,BorderLayout.NORTH); JPanel centerWeekAndDay = createWeekAndDayPanal(); add(centerWeekAndDay,BorderLayout.CENTER); } private JPanel createYearAndMonthPanal(){ Calendar c = getCalendar() ; int currentYear =c.get(Calendar.YEAR); int currentMonth =c.get(Calendar.MONTH) 1; int currentHour =c.get(Calendar.HOUR_OF_DAY); JPanel result = new JPanel(); result.setLayout(new FlowLayout()); result.setBackground(controlLineColor); yearSpin = new JSpinner(new SpinnerNumberModel(currentYear,startYear,lastYear,1)); yearSpin.setPreferredSize(new Dimension(48,20)) ; yearSpin.setName("Year") ; yearSpin.setEditor(new JSpinner.NumberEditor(yearSpin, "####")) ; yearSpin.addChangeListener(this) ; result.add(yearSpin) ; JLabel yearLabel = new JLabel("年"); yearLabel.setForeground(controlTextColor); result.add(yearLabel); monthSpin = new JSpinner(new SpinnerNumberModel(currentMonth,1,12,1)); monthSpin.setPreferredSize(new Dimension(35,20)) ; monthSpin.setName("Month") ; monthSpin.addChangeListener(this) ; result.add(monthSpin) ; JLabel monthLabel = new JLabel("月"); monthLabel.setForeground(controlTextColor); result.add(monthLabel); hourSpin = new JSpinner(new SpinnerNumberModel(currentHour,0,23,1)); hourSpin.setPreferredSize(new Dimension(35,20)) ; hourSpin.setName("Hour") ; hourSpin.addChangeListener(this) ; result.add(hourSpin) ; JLabel hourLabel = new JLabel("时"); hourLabel.setForeground(controlTextColor); result.add(hourLabel); return result ; } private JPanel createWeekAndDayPanal() { String colname[] = {"日","一","二","三","四","五","六"}; JPanel result = new JPanel(); //设置固定字体,以免调用环境改变影响界面美观 result.setFont(new Font("宋体", Font.PLAIN, 12)); result.setLayout(new GridLayout(7,7)); result.setBackground(Color.white); JLabel cell ; for(int i=0;i<7;i ) { cell = new JLabel(colname[i]); cell.setHorizontalAlignment(JLabel.RIGHT); if (i==0 || i==6) cell.setForeground(weekendFontColor) ; else cell.setForeground(weekFontColor) ; result.add(cell) ; } int actionCommandId = 0 ; for(int i = 0; i < 6; i ) for(int j = 0; j < 7; j ) { JButton numberButton = new JButton(); numberButton.setBorder(null) ; numberButton.setHorizontalAlignment(SwingConstants.RIGHT); numberButton.setActionCommand(String.valueOf(actionCommandId)) ; numberButton.addActionListener(this) ; numberButton.setBackground(palletTableColor); numberButton.setForeground(dateFontColor) ; if (j==0 || j==6) numberButton.setForeground(weekendFontColor) ; else numberButton.setForeground(dateFontColor) ; daysButton[i][j] = numberButton; result.add(numberButton) ; actionCommandId ; } return result; } private JDialog createDialog(Frame owner ) { JDialog result = new JDialog(owner,"日期时间选择",true) ; result.setDefaultCloseOperation(JDialog.HIDE_ON_CLOSE); result.getContentPane().add(this,BorderLayout.CENTER) ; result.pack() ; result.setSize(width, height); return result ; } void showDateChooser(Point position ) { Frame owner =(Frame)SwingUtilities.getWindowAncestor(DateChooserJButton.this) ; if (dialog==null || dialog.getOwner()!= owner) dialog = createDialog(owner ) ; dialog.setLocation(getAppropriateLocation(owner ,position ) ) ; flushWeekAndDay() ; dialog.show(); } Point getAppropriateLocation(Frame owner ,Point position ) { Point result = new Point(position) ; Point p = owner.getLocation() ; int offsetX = (position.x width) - (p.x owner.getWidth() ) ; int offsetY = (position.y height) - (p.y owner.getHeight() ) ; if (offsetX >0 ) { result.x -= offsetX ; } if (offsetY >0 ) { result.y -= offsetY ; } return result ; } private Calendar getCalendar() { Calendar result = Calendar.getInstance(); result.setTime(getDate()) ; return result ; } private int getSelectedYear() { return ((Integer)yearSpin.getValue()).intValue() ; } private int getSelectedMonth() { return ((Integer)monthSpin.getValue()).intValue() ; } private int getSelectedHour() { return ((Integer)hourSpin.getValue()).intValue() ; } private void dayColorUpdate(boolean isOldDay) { Calendar c = getCalendar() ; int day = c.get(Calendar.DAY_OF_MONTH); c.set(Calendar.DAY_OF_MONTH,1); int actionCommandId =day-2 c.get(Calendar.DAY_OF_WEEK) ; int i = actionCommandId/7; int j = actionCommandId%7; if (isOldDay) daysButton[i][j].setForeground(dateFontColor) ; else daysButton[i][j].setForeground(todayBackColor) ; } private void flushWeekAndDay() { Calendar c = getCalendar() ; c.set(Calendar.DAY_OF_MONTH,1); int maxDayNo = c.getActualMaximum(Calendar.DAY_OF_MONTH); int dayNo = 2 - c.get(Calendar.DAY_OF_WEEK) ; for(int i = 0; i < 6; i ) { for(int j = 0; j < 7; j ) { String s="" ; if (dayNo>=1 && dayNo<=maxDayNo ) s = String.valueOf(dayNo) ; daysButton[i][j].setText(s) ; dayNo ; } } dayColorUpdate(false) ; } public void stateChanged(ChangeEvent e) { JSpinner source =(JSpinner)e.getSource() ; Calendar c = getCalendar() ; if (source.getName().equals("Hour")) { c.set(Calendar.HOUR_OF_DAY, getSelectedHour()); setDate(c.getTime()); return ; } dayColorUpdate(true) ; if (source.getName().equals("Year")) c.set(Calendar.YEAR, getSelectedYear()); else // (source.getName().equals("Month")) c.set(Calendar.MONTH, getSelectedMonth()-1); setDate(c.getTime()); flushWeekAndDay() ; } public void actionPerformed(ActionEvent e) { JButton source =(JButton)e.getSource() ; if (source.getText().length()==0) return ; dayColorUpdate(true) ; source.setForeground(todayBackColor) ; int newDay = Integer.parseInt(source.getText()); Calendar c = getCalendar() ; c.set(Calendar.DAY_OF_MONTH,newDay); setDate(c.getTime()); } } }
Java Swing日期选择控件完整实现与使用指南 Swing基于Java 2D绘制技术构建,采用纯Java实现,避免了AWT对本地对等组件的依赖,从而具备跨平台一致性与高度可定制性。其核心设计遵循MVC(Model-View-Controller)模式,如JTableJList等组件均通过分离数据模型与渲染逻辑实现灵活扩展。这种架构为自定义控件(如DatePicker)提供了理论基础——开发者可通过继承JComponent并组合现有组件(如JButtonJPanel)构造复合型UI元素。 阅读详情

相关推荐

JAVA Swing日期选择控件datepicker

1、JAVA Swing日期选择控件datepicker 2、附带该控件的使用

java日期选择控件(可以同时选择小时和分钟)

JDatePicker库的下载地址,裁剪后,简易代码地址,

weixin_42286826的博客 270

别再手动点按钮了!用C#给PowerMill做个自动化小助手(附完整源码)

本文详细介绍了如何使用C#进行PowerMill二次开发,打造自动化助手以提升CAM工程师的工作效率。通过实战案例和完整源码,展示了从环境配置到核心功能实现的完整流程,包括智能连接模块、项目批量处理器和刀路智能分析器等高级功能开发。

weixin_26899659的博客 347

日期时间选择控件

 一次项目研发中需要日期时间选择控件,网上提供的不多,且质量一般,所以只好自己做,参考了网上某位同学的作品 Jave 日期选择控件 DateChooser 。目前的代码将日期时间选择封装在一个按钮组件内,应该很好用,支持Application 、Appletimport java.util.Date;import java.util.Calendar;import java.text.Date

ts2794的专栏 1194

基于YOLOv8和时序模型的异常动作检测系统

异常动作检测是计算机视觉领域的重要应用,广泛应用于智能监控、安防系统、老人看护等场景。本项目结合YOLOv8目标检测和LSTM时序模型,实现对打架、摔倒、奔跑等异常动作的实时检测,并提供了完整的Web界面。多技术融合: 结合YOLOv8目标检测和LSTM时序建模实时检测: 支持实时视频流处理和文件分析用户友好: 提供完整的Web界面可扩展性: 模块化设计便于功能扩展高性能: 包含多种优化策略。

YOLO 764

2024年数字IC秋招-格科微-数字电路设计工程师-笔试题

笔试题型:简答题(9个)笔试平台:牛客(电脑监控)笔试时间:2h。

qq_42135020的博客 1605

swing 日期选择器 界面&代码

/* * DateChooser.java * * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ import java.awt.BasicStroke; import java.awt.BorderLayo...

相的java 376

Halcon学习之一维测量(3)

带定位器的测量。首先看一下“定位”是什么意思?回答:比如我们测量一个芯片,这时候我们设置一个测量矩形,来沿着测量目标进行测量。但是下一张当芯片的位置发生变化时,测量矩形的位置就不对了,就不是沿着测量目标了。这样就不对了!芯片在转,测量矩形也要跟着一起转才行。这个时候就需要“定位”来起作用了!定位之后得到这个芯片的旋转角度之后,测量矩形可以跟着这个角度转。这就是“定位”+“测量”,这是我们工业视觉常用的一个手法,在Halcon里面也是有例子展现的。

deep_love1314的博客 788

java界面日期选择控件_Java自学-图形界面 日期控件

两种Swing下的日期控件 DatePicker 和JXDatePickerswing没有自带的日期控件,需要第三方的类步骤 1 : DatePicker本例使用 Datepicker.jar 包,有一个缺点,不能设置时间,只能在创建控件的时候传入指定日期。需要设置日期,请使用JXDatePickerpackage gui;import java.awt.Color;import java.awt...

weixin_33011357的博客 928

【KingSCADA】如何建立硬件系统及相关变量

本篇主要讲解如何定义设备,如何定义变量。KingSCADA3.8的采集系统是指负责和现场设备进行通讯,并采集现场数据和控制现场数据的模块,称之为采集器,也叫IOServer应用,它是一组独立的应用程序,可以脱离KingSCADA3.8软件,它依赖于KingSCADA3.8驱动产品,通过驱动与IO设备进行通讯。采集系统由通讯链路,设备,数据块组成。链路:链路是指计算机通过什么方式(接口)与设备进行连接,链路类别:串口,以太网,GPRS,Modem,通信卡,采集卡,无链路。

做有价值的事,积累有价值的笔记! 1万+

Label Studio 数据标注平台,大模型预训练与微调必备

摘要:LabelStudio是一款开源数据标注工具,支持文本、图像等多种数据类型的标注。本文介绍了其安装方法(通过conda创建环境并pip安装)、基础使用流程(创建项目、导入数据、设置标签、标注导出)以及AI自动标注功能的实现。重点讲解了如何通过MLBackend集成LangChain模型实现自动标注:创建自定义模型类、构建预测链、处理返回结果,最后配置到LabelStudio项目中。该功能可显著提升标注效率,标注人员只需在AI预测结果基础上进行修正。

技术引领业务创新 290

Java制作的日期选择控件

 Java制作的日期选择控件,经测试没有问题,主要包括以下类:主类:CDateComponent           提供二个方法:            getSelectedDateByString():以字符串的形式返回选择的日期            getSelectedDate():以java.util.Date的形式返回选择的日期内部类:DateComponent

cxyeu的专栏 1248

OpenHarmony电源管理驱动架构剖析:HDI框架下的低功耗实现

鸿蒙电源管理驱动模块是OpenHarmony操作系统中负责设备电源状态管理的核心组件。该模块基于HDI(Hardware Device Interface)框架实现,提供了完整的电源管理功能,包括系统休眠/唤醒、运行锁管理、休眠模式控制等核心功能。public:// 主要接口函数// 运行锁管理private:// 内部辅助函数// 成员变量public:// 运行锁控制接口// 回调管理private:// 内部辅助函数。

m0_67505153的博客 209

java 的日期选择控件_Java日期选择控件

一起学习一次项目研发中需要日期时间选择控件,网上提供的不多,且质量一般,所以只好自己做,参考了 网上某位同学的 作品 Jave 日期选择控件 DateChooser 。目前的代码将日期时间选择封装在一个按钮组件内,应该很好用,支持Application 、Appletimport java.util.Date;import java.util.Calendar;import java.text.D...

weixin_31083103的博客 1729

用 Joule 点燃 ABAP 开发者的舞台感:SAP BTP 上的 ABAP AI 能力实战解读

摘要:SAP推出的Joule for developers和ABAP AI功能为开发者提供了智能辅助工具,旨在优化ABAP开发流程。主要功能包括上下文感知的代码预测补全、代码解释、单元测试生成和开发问题实时解答。这些能力特别适合应对Cloud环境下ABAP开发的复杂约束,如Clean Core原则和受限语法范围。通过减少重复劳动和提升代码理解效率,该工具帮助开发者将注意力集中在业务逻辑而非技术细节上。随着企业加速向S/4HANA迁移,这些AI功能将在遗留代码改造和云适配中发挥更大作用,建议团队将其纳入工程体

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 299

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【亲测免费】 JAVA Swing日期选择控件datepicker资源下载

JAVA Swing日期选择控件datepicker资源下载 去发现同类优质开源项目:https://gitcode.com/ 此仓库提供JAVA Swing日期选择控件datepicker的下载,包含了该控件及其使用说明。 控件简介 控件功能:这是一个用于JAVA Swing应用程序中的日期选择控件,用户可以通过图形界面方便地选择日期。 附带使用说明:我们同时提供了该控件的使用方法,帮助开发者...

gitblog_06763的博客 255

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java 日期控件_JAVA实现日期选择控件

import java.util.Date;import java.util.Calendar;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.text.ParseException;import java.awt.Color;import java.awt.Font;import java.awt...

weixin_29117805的博客 1622

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java调用日期控件_JAVA GUI中日期选择控件的实现 | 学步园

importjava.text.SimpleDateFormat;importjava.util.Calendar;importjava.util.Date;importjavax.swing.border.*;importjavax.swing.event.*;importjavax.swing.*;importjava.awt.*;importjava.awt.event.*;...

weixin_34430676的博客 785

java c/s中的日期选择控件 按钮式

今天做java c/s程序的时候要用到一个日期选择的控件,NetBeans里面没有,所以自己写了

u012916287的专栏 2173

JAVA GUI中日期选择控件的实现

最近在做项目时在日期选择控件上花了不少时间,所以在此总结一下,引用的地方均注明了原文出处。一、SWING版运行效果图:代码:import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import javax.swing.border.*;import javax.swing.event

了我欣艺 8981

JAVA SWING 日期选择控件:JLable 与 JTextField 接入 TaoToken 配置实战

Java Swing 日期选择控件接入 TaoToken 实战:从 DateChooser 的 register() 绑定 JTextField/JLabel 入手,给出 settings.json 骨架与 curl 验证请求,快速排查 Popup 偏移、SimpleDateFormat 线程安全等高频报错。官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end 提供统一 Key 与 API 通道,让 AI 补全可编译的 Swing 代码。

weixin_42607969的博客 182

java swing 日期选择控件_Java Swing 日期控件(转载)

1 packagecom.ryd.stocktrader.client.util;23 importjava.awt.BasicStroke;45 importjava.awt.BorderLayout;67 importjava.awt.Color;89 importjava.awt.Component;1011 importjava.awt.Cursor;1213 importjava.awt...

weixin_42157556的博客 1165

java日期选择控件

/* * DateChooser.java * * Created on 2007年8月20日, 下午6:07 * * To change this template, choose Tools | Template Manager * and open the template in the editor. */ import java.awt.BasicStroke; imp

留心咯 490

java 日期选着插件_SWT中的日期选择控件

#re: SWT中的日期选择控件回复更多评论2007-07-12 12:08 by wanglin这个是我在你的基础上改的public class CalendarDialog implements MouseListener{private SimpleDateFormat stdDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm");p...

weixin_40004502的博客 227
上一篇: 把WebLogic EJB程序迁移到JBoss上
下一篇: 归纳:编写Java程序最容易犯的21种错误
java169
博客等级 码龄18年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值