/**以下是日历的代码程序
**/
//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实现简单日历小程序 Java是当前最流行的编程语言之一,广泛应用于Android应用开发、Web开发、企业软件开发等领域。Javaswing是Java提供的一种图形用户界面(GUI)工具包,能够帮助开发者快速创建跨平台的图形...
Java日历小程序是一款基于Swing库开发的桌面应用程序,它为用户提供了一个直观的方式来查看和管理日期。Swing是Java Standard Edition (Java SE)的一部分,是一个用于构建用户界面的图形工具包,提供了丰富的组件和...
Java日历小程序是一种基于AWT(Abstract Window Toolkit)和SWING库开发的用户界面应用程序,主要用于展示日期并可能提供一些与日历相关的功能,如查看、添加和管理事件。这两个库是Java GUI(图形用户界面)编程的...
Java手机日历程序是利用Java编程语言开发的一款适用于移动设备的应用程序,主要用于管理个人时间、事件安排和提醒功能。在本文中,我们将深入探讨Java语言如何用于构建这样的日历应用,涉及的关键技术点包括Android...
在这个“用Java编写的日历程序”中,我们探讨的是如何利用Java来实现一个能够显示指定时间段内日历信息的功能。这个程序可能涵盖了日期处理、时间计算、用户界面设计等多个方面的知识点。 首先,我们要了解Java中的...
综上所述,这段代码示例展示了如何使用Java Swing构建一个简单的日历应用程序界面,包括如何创建和布局UI组件、响应用户输入以及进行基本的日期计算。尽管代码本身存在一些不足之处,但它提供了一个很好的起点来学习...
这展示了如何在Java程序中组织逻辑和执行流程,这对于构建任何应用程序,包括日历应用,都是至关重要的。 虽然这段代码并没有直接实现日历的所有功能,但它涉及到的输入处理、数据结构使用、递归算法和逻辑控制等...
Java日历记事本程序是一种基于Java编程语言开发的应用,旨在提供一个简单的日历功能,让用户可以记录日常生活中的事件和提醒。对于初学者而言,这是一个很好的项目,可以帮助他们熟悉Java的基础知识,理解面向对象...
总的来说,这个Java日历程序是一个很好的学习资源,它涵盖了日期时间处理、GUI设计、数据结构使用、多线程编程等多个Java核心概念,对于想要提升Java编程技能,特别是GUI应用开发的初学者而言,是一个理想的实践项目...
【Java日历程序详解】 Java作为一种广泛使用的编程语言,其强大的功能和跨平台特性使得它在各种领域都有广泛应用,其中包括创建实用的桌面应用程序,如日历程序。本篇将深入探讨一个由Java编写的日历程序,该程序...
2. **简单日历实现**:通常,一个简单的日历程序可能只显示当前日期,并允许用户向前或向后翻页。这可以通过对`Calendar`对象进行增减操作实现,然后将结果转换为友好的字符串格式显示。如果HTML文件展示了简单日历...
### Java日历程序知识点 #### 一、程序概述 该Java程序主要实现了一个简单的日历功能,用户可以查看特定年份的月历,并且能够通过调整年份来更新日历显示的内容。整个程序的设计考虑了良好的用户体验,如通过下拉...
Java日历程序是Java编程初学者常常接触的一个经典练习,它可以帮助学习者深入理解基本的编程概念,如顺序执行、条件分支和循环控制。在这个项目中,我们将探讨如何使用Java来实现一个简单的日历程序。 首先,让我们...
总的来说,编写一个简单的Java日历程序需要对Java日期时间API有深入理解,并能够结合控制台交互、输入输出和文件操作。通过以上介绍,你应该能理解如何着手实现这样的程序,同时也可以参考给定的源代码进行学习和...
这个“java写的日历记事本程序”是一个基于Java编程语言开发的应用程序,主要用于日程管理和记事。在Java世界中,这样的程序通常涉及到多方面的技术知识点,包括但不限于以下几点: 1. **Java基础**:Java是这整个...
在Java编程语言中,开发一个简单的日历生成程序可以是一个有趣的练习,同时也是对日期和时间处理的深入理解。本程序的主要目标是根据用户输入的年份和月份生成对应的日历。下面将详细介绍这个项目涉及的关键知识点。...
用java实现有日历小程序,适合初学者练习.