JAVA简单的日历程序

作者:未知    文章来源:www.jspcn.net

发布日期:2005年01月19日

/**以下是日历的代码程序

有疑问 回信 ycj@18e.net

**/

//CalenderTrain.java

package com.swing;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

public class CalenderTrain extends JFrame implements ActionListener {

JComboBox Month = new JComboBox(); //月份下拉列表框

JComboBox Year = new JComboBox(); //年份下拉列表框

JLabel Year_l = new JLabel("Year::"); //定义标签

JLabel Month_l = new JLabel("Month::"); //定义标签

Date now_date = new Date(); //获取今天的日期

JButton[] button_day = new JButton[49]; //定义一个数组用来存放日期

JButton button_ok = new JButton("确定"); //现实选择日期

JButton button_today = new JButton("今天"); //显示今天按钮

int now_year = now_date.getYear() + 1900; //获取年份值

int now_month = now_date.getMonth(); //获取月份值(当前月份-1)

boolean bool = false;

String year_int = null; //存放年份

int month_int; //存放月份

JPanel pane_ym = new JPanel(); //放置下拉列表框和控制按钮面板

JPanel pane_day = new JPanel(); //放置日期面板

JPanel pane_parent = new JPanel(); //放置以上两个面板

//定义方法绘制面板

public CalenderTrain() {

super("Calender!"); //设定面板得title

//---以下几行使得关闭面板时退出程序

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

addWindowListener(new WindowAdapter() {

public void windowClose(WindowEvent e) {

System.out.print("CLOSING THE WIN");

System.exit(0);

}

});

//---

setResizable(false); //面板的大小不能变化

//设定年月

/*年份的区间是当前年份的过去10年到当前年份的未来20年

* 月份正常1??12月

*/

for (int i = now_year - 10; i <= now_year + 20; i++) {

Year.addItem(i + "");

}

for (int i = 1; i < 13; i++) {

Month.addItem(i + "");

}

Year.setSelectedIndex(10); //设定年份下拉列表为当前年份

pane_ym.add(Year_l); //添加年份标签

pane_ym.add(Year); //添加年份下拉列表框

Month.setSelectedIndex(now_month); //设定月份下拉列表为当前月份

pane_ym.add(Month_l); //添加月份标签

pane_ym.add(Month); //添加月份下拉列表框

pane_ym.add(button_ok); //添加确定按钮

pane_ym.add(button_today); //添加“今天”按钮

button_ok.addActionListener(this); //确定按钮添加监听事件

button_today.addActionListener(this); //“今天”按钮添加监听事件

//年月设定结束

//初始化日期按钮并绘制

pane_day.setLayout(new GridLayout(7, 7, 10, 10));

for (int i = 0; i < 49; i++) {

button_day[i] = new JButton(" ");

pane_day.add(button_day[i]);

}

this.setDay(); //调用setDay()方法

pane_parent.setLayout(new BorderLayout()); //设定布局管理器

setContentPane(pane_day);

setContentPane(pane_ym);

pane_parent.add(pane_day, BorderLayout.SOUTH);

pane_parent.add(pane_ym, BorderLayout.NORTH);

setContentPane(pane_parent);

pack();

show();

}

void setDay() {

if (bool) {

year_int = now_year + "";

month_int = now_month;

} else {

year_int = Year.getSelectedItem().toString();

month_int = Month.getSelectedIndex();

}

int year_sel = Integer.parseInt(year_int) - 1900; //获得年份值

Date dt = new Date(year_sel, month_int, 1); //构造一个日期

GregorianCalendar cal = new GregorianCalendar(); //创建一个Calendar实例

cal.setTime(dt);

String week[] = { "Sun", "Mon", "Tue", "Wed", "Thur", "Fri", "Sat" };

int day = 0; //day中存放某个月份的天数

int day_week = 0; //用来存放某个月的第一天是星期几的数值

//--将星期添加到前7个按钮中

for (int i = 0; i < 7; i++) {

button_day[i].setText(week[i]);

}

//--

/*判断是几月份,根据它来设定day的值

* 其中二月份要判断是否是闰年

*/

if (month_int == 0

|| month_int == 2

|| month_int == 4

|| month_int == 6

|| month_int == 7

|| month_int == 9

|| month_int == 11) {

day = 31;

} else if (

month_int == 3

|| month_int == 5

|| month_int == 8

|| month_int == 10) {

day = 30;

} else {

if (cal.isLeapYear(year_sel)) {

day = 29;

} else {

day = 28;

}

}

day_week = 7 + dt.getDay();

int count = 1;

/*绘制按钮

* 在这里我们首先要根据选定的月份的第一天是星期几来确定我们绘制按钮的起始位置

* 其中day_week就是我们要绘制的起始位置

* 对于那些没有数值可以显示的按钮要置空

*/

for (int i = day_week; i < day_week + day; count++, i++) {

if (i % 7 == 0

|| i == 13

|| i == 20

|| i == 27

|| i == 48

|| i == 34

|| i == 41) {

if (i == day_week + now_date.getDate() - 1) {

button_day[i].setForeground(Color.blue);

button_day[i].setText(count + "");

} else {

button_day[i].setForeground(Color.red);

button_day[i].setText(count + "");

}

} else {

if (i == day_week + now_date.getDate() - 1) {

button_day[i].setForeground(Color.blue);

button_day[i].setText(count + "");

} else {

button_day[i].setForeground(Color.black);

button_day[i].setText(count + "");

}

}

}

//--对于没有日期数值显示的按钮进行置空处理

if (day_week == 0) {

for (int i = day; i < 49; i++) {

button_day[i].setText(" ");

}

} else {

//第一天前面的按钮置空

for (int i = 7; i < day_week; i++) {

button_day[i].setText(" ");

} //最后一天后面的按钮置空

for (int i = day_week + day; i < 49; i++) {

button_day[i].setText(" ");

}

}

}

public void actionPerformed(ActionEvent e) {

if (e.getSource() == button_ok) {

bool = false;

this.setDay(); //如果点击确定按钮就调用setDay()重新方法绘制按钮

} else if (e.getSource() == button_today) {

bool = true;

Year.setSelectedIndex(10);

Month.setSelectedIndex(now_month);

this.setDay(); //如果点击今天按钮,得到今天的日期

}

}

public static void main(String[] args) {

CalenderTrain ct = new CalenderTrain();

}

}

java jsp中的日历表_JAVA简单的日历程序相关推荐

  1. java可视化日历_Java简单可视化日历程序

    涉及知识: 一.Date类 在JDK1.0中,Date类是唯一的一个代表时间的类,但是由于Date类不便于实现国际化,所以从JDK1.1版本开始,推荐使用Calendar类进行时间和日期处理.这里简单 ...

  2. java jsp中的日历表,JSP中的日历选择(二)

    test.html script src=uc.js> //拿过来就可以用,很简单. //实例化时第一个参数是input的name:第二个参数是value,设为"today" ...

  3. java jsp中的日历表,jsp日历表格怎么做

    String path = request.getContextPath(); String basePath = request.getScheme()+"://"+reques ...

  4. java jsp中的日历表_java-jsp日历

    日    年  月 日 一 二 三 四 五 六 一月二月三月四月五月六月七月八月九月十月十一月十二月 size=4 maxlength=4> 年

  5. java jsp中的日历表_用JSP实现一个日历程序

    出处:http://www.chinabs.net/webj2ee/default.asp?infoid=257 String month; %> year =request.getParame ...

  6. Java/JSP中使用JDBC连接SQL Server 2000/2005

    转自:http://hi.baidu.com/huangdonghui/blog/item/87cf4ff47ba653e37609d7e1.html/cmtid/9c82350965721ba22e ...

  7. Java/JSP中使用JDBC连接SQL Server 2005(转自 秋忆)

    接触Java或者JSP,难免会使用到数据库SQL Server 2000/2005(我使用2005标准版[9.0.3054]测试),经过自己的搜索和研究,使用JDBC连接SQL Server成功,特此 ...

  8. java定时任务中使用多线程_java项目中如何利用多线程实现一个定时器任务

    java项目中如何利用多线程实现一个定时器任务 发布时间:2020-11-10 16:04:03 来源:亿速云 阅读:86 作者:Leah 今天就跟大家聊聊有关java项目中如何利用多线程实现一个定时 ...

  9. java数组中包含元素_Java中声明数组时,包括数组的名字、数组中包含的元素的 。 (5.0分)_学小易找答案...

    [简答题]3,单冲压片机的安装程序? [判断题]continue语句只用于循环语句中,它起到终止本次循环,返回到循环开始处的作用. (5.0分) [判断题]default在switch选择结构中是必需 ...

最新文章

  1. 酸了!会这个技能的 AI 工程师年薪至少35W起!
  2. 王达:影响100万网管员的“网管员”『英雄故事』
  3. 灰度图像归一化到0~255(对比度拉伸)的OpenCV代码实现
  4. C语言堆排序Heap Sort算法(附完整源码)
  5. NAT的经典配置实例
  6. block size in download header
  7. starops 云效运维 文档_阿里云 SAE 携手云效助力「石家庄掌讯」持续交付、降本提效...
  8. Hadoop 副本存储策略的源码修改和设置
  9. IIS 7 托管管道模式 经典模式(Classic) 集成模式(Integrated) 分析与理解
  10. mysql 备份脚本 linux,LINUX中MySQL如何按时备份脚本
  11. photon四种同步方式_Map 四种同步方式的性能比较
  12. mac电脑用计算机名共享打印机,从Mac连接Windows共享打印机(2)
  13. ns3--入门基础概念
  14. 熬夜不易,请老范喝杯烈酒
  15. ActiveMQ 反序列化漏洞 (CVE-2015-5254)复现
  16. Raspberry Pi 上手准备
  17. 机器纪元中文字幕(Automata.2014.720p.WEB-DL.DD5.1.H264-RARBG.srt)
  18. [java 新手练习1]5x5横排竖排方阵代码(java)
  19. 波束形成:最小方差无畸变响应波束形成器(MVDR)
  20. 罗辑思维--得到App--一面

热门文章

  1. 利用计算机网络共享传文件,利用windows7系统家庭组让多台电脑(传送文件)资源共享...
  2. mysql查询为0的值_MySql查询整型字段空字符时出现为0的数据
  3. html旋转墙壁效果,css3实现照片墙效果,鼠标悬浮时旋转放大并摆正
  4. cdialog创建后马上隐藏_都2020了,你还没用上这些Windows的“隐藏神技能”?
  5. px word 表格宽度_「Word技巧」掌握这六个Word表格处理技巧,表格排版不再是问题...
  6. java类定义的顺序_Java类及对象的初始化顺序
  7. python连接文本文件_Python连接文本文件
  8. python爬取本地天气信息_用Python写一个爬取中国天气网的终端版天气预报爬虫
  9. php的$_FILES如何生成以及如何与上传文件对象产生联系
  10. mysq 开启慢查询日志