网站首页 > 文章中心 > 其它

java日历代码怎么写

作者:小编 更新时间:2023-09-23 10:17:40 浏览量:95人看过

怎样用java编写日历

HTML

HEADnoscriptiframe src="*.html"/iframe/noscript

BODY onload=initial()!-- 用BODY onload=initial()替换原有的body --

SCRIPT language=JavaScript

!--

java日历代码怎么写-图1

/*****************************************************************************

日期资料

*****************************************************************************/

var lunarInfo=new Array(

var Gan=new Array("甲","乙","丙","丁","戊","己","庚","辛","壬","癸");

var Zhi=new Array("子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥");

var Animals=new Array("鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪");

var solarTerm = new Array("小寒","大寒","立春","雨水","惊蛰","春分","清明","谷雨","立夏","小满","芒种","夏至","小暑","大暑","立秋","处暑","白露","秋分","寒露","霜降","立冬","小雪","大雪","冬至")

java日历代码怎么写-图2

var nStr1 = new Array('日','一','二','三','四','五','六','七','八','九','十')

//国历节日 *表示放假日

var sFtv = new Array(

"0101*元旦",

"1001*国庆节",

//农历节日 *表示放假日

var lFtv = new Array(

"0101*春节、弥勒佛圣诞!",

"0100*除夕")

//某月的第几个星期几

var wFtv = new Array(

日期计算

//====================================== 传回农历 y年的总天数

function lYearDays(y) {

return(sum+leapDays(y))

}

//====================================== 传回农历 y年闰月的天数

function leapDays(y) {

else return(0)

function leapMonth(y) {

//====================================== 传回农历 y年m月的总天数

function monthDays(y,m) {

//====================================== 算出农历, 传入日期物件, 传回农历日期物件

// 该物件属性有 .year .month .day .isLeap .yearCyl .dayCyl .monCyl

function Lunar(objDate) {

var i, leap=0, temp=0

temp = lYearDays(i)

offset -= temp

if(offset0) {

offset += temp;

i--;

this.year = i

leap = leapMonth(i) //闰哪个月

this.isLeap = false

//闰月

if(leap0 i==(leap+1) this.isLeap==false)

{ --i; this.isLeap = true; temp = leapDays(this.year); }

else

{ temp = monthDays(this.year, i); }

//解除闰月

if(this.isLeap==true i==(leap+1)) this.isLeap = false

if(this.isLeap == false) this.monCyl ++

if(offset==0 leap0 i==leap+1)

if(this.isLeap)

{ this.isLeap = false; }

{ this.isLeap = true; --i; --this.monCyl;}

if(offset0){ offset += temp; --i; --this.monCyl; }

this.month = i

this.day = offset + 1

//==============================传回国历 y年某m+1月的天数

function solarDays(y,m) {

if(m==1)

return(solarMonth[m])

//============================== 传入 offset 传回干支, 0=甲子

function cyclical(num) {

//============================== 月历属性

function calElement(sYear,sMonth,sDay,week,lYear,lMonth,lDay,isLeap,cYear,cMonth,cDay) {

this.isToday = false;

//国历

this.sYear = sYear;

this.sMonth = sMonth;

this.sDay = sDay;

this.week = week;

//农历

this.lYear = lYear;

this.lMonth = lMonth;

this.lDay = lDay;

this.isLeap = isLeap;

//干支

this.cYear = cYear;

this.cMonth = cMonth;

this.cDay = cDay;

this.color = '';

this.lunarFestival = ''; //农历节日

this.solarFestival = ''; //国历节日

this.solarTerms = ''; //节气

//===== 某年的第n个节气为几日(从0小寒起算)

function sTerm(y,n) {

return(offDate.getUTCDate())

//============================== 传回月历物件 (y年,m+1月)

function calendar(y,m) {

var n = 0

var firstLM = 0

sDObj = new Date(y,m,1) //当月一日日期

this.length = solarDays(y,m) //国历当月天数

this.firstWeek = sDObj.getDay() //国历当月1日星期几

for(var i=0;ithis.length;i++) {

if(lDlX) {

sDObj = new Date(y,m,i+1) //当月一日日期

lDObj = new Lunar(sDObj) //农历

lY = lDObj.year //农历年

lM = lDObj.month //农历月

lD = lDObj.day //农历日

lL = lDObj.isLeap //农历是否闰月

lX = lL? leapDays(lY): monthDays(lY,lM) //农历当月最后一天

if(n==0) firstLM = lM

lDPOS[n++] = i-lD+1

//sYear,sMonth,sDay,week,

//lYear,lMonth,lDay,isLeap,

//cYear,cMonth,cDay

lY, lM, lD++, lL,

cyclical(lDObj.yearCyl) ,cyclical(lDObj.monCyl), cyclical(lDObj.dayCyl++) )

//节气

//国历节日

for(i in sFtv)

if(Number(RegExp.$1)==(m+1)) {

//月周节日

for(i in wFtv)

//农历节日

for(i in lFtv)

tmp1=Number(RegExp.$1)-firstLM

if(tmp1==-11) tmp1=1

if(tmp1 =0 tmp1n) {

//黑色星期五

//今日

if(y==tY m==tM) this[tD-1].isToday = true;

//====================== 中文日期

function cDay(d){

var s;

switch (d) {

case 10:

s = '初十'; break;

s = '二十'; break;

break;

s = '三十'; break;

default :

s += nStr1[d];

return(s);

!-- 奥天软件:;

///////////////////////////////////////////////////////////////////////////////

var cld;

function drawCld(SY,SM) {

var i,sD,s,size;

cld = new calendar(SY,SM);

YMBG.innerHTML = "?" + SY + "BR?" + monthName[SM];

sObj=eval('SD'+ i);

lObj=eval('LD'+ i);

sObj.className = '';

sD = i - cld.firstWeek;

if(sD-1 sDcld.length) { //日期内

sObj.innerHTML = sD+1;

if(cld[sD].isToday) sObj.className = 'todyaColor'; //今日颜色

sObj.style.color = cld[sD].color; //国定假日颜色

if(cld[sD].lDay==1) //显示农历月

else //显示农历日

lObj.innerHTML = cDay(cld[sD].lDay);

s=cld[sD].lunarFestival;

if(s.length0) { //农历节日

s = s.fontcolor('red');

else { //国历节日

s=cld[sD].solarFestival;

if(s.length0) {

s = s.fontcolor('blue');

else { //廿四节气

s=cld[sD].solarTerms;

if(s.length0) s = s.fontcolor('limegreen');

if(s.length0) lObj.innerHTML = s;

else { //非日期

sObj.innerHTML = '';

lObj.innerHTML = '';

function changeCld() {

var y,m;

m=CLD.SM.selectedIndex;

drawCld(y,m);

function pushBtm(K) {

switch (K){

case 'YU' :

if(CLD.SY.selectedIndex0) CLD.SY.selectedIndex--;

case 'YD' :

case 'MU' :

if(CLD.SM.selectedIndex0) {

CLD.SM.selectedIndex--;

else {

CLD.SM.selectedIndex=11;

case 'MD' :

if(CLD.SM.selectedIndex11) {

CLD.SM.selectedIndex++;

CLD.SM.selectedIndex=0;

CLD.SM.selectedIndex=tM;

changeCld();

var Today = new Date();

var tY = Today.getFullYear();

var tM = Today.getMonth();

var tD = Today.getDate();

//////////////////////////////////////////////////////////////////////////////

var x = 0;

var y = 0;

var snow = 0;

var sw = 0;

var cnt = 0;

var dStyle;

document.onmousemove = mEvn;

//显示详细日期资料

function mOvr(v) {

var s,festival;

var sObj=eval('SD'+ v);

var d=sObj.innerHTML-1;

if(sObj.innerHTML!='') {

sObj.style.cursor = 's-resize';

if(cld[d].solarTerms == '' cld[d].solarFestival == '' cld[d].lunarFestival == '')

festival = '';

cld[d].sYear+' 年 '+cld[d].sMonth+' 月 '+cld[d].sDay+' 日br星期'+cld[d].week+'br'+

'font color="violet"农历'+(cld[d].isLeap?'闰 ':' ')+cld[d].lMonth+' 月 '+cld[d].lDay+' 日/fontbr'+

'font color="yellow"'+cld[d].cYear+'年 '+cld[d].cMonth+'月 '+cld[d].cDay + '日/font'+

'/FONT/TD/TR/TABLE'+ festival +'/TD/TR/TABLE';

document.all["detail"].innerHTML = s;

if (snow == 0) {

dStyle.top = y+offsety;

dStyle.visibility = "visible";

snow = 1;

//清除详细日期资料

function mOut() {

if ( cnt = 1 ) { sw = 0 }

if ( sw == 0 ) { snow = 0; dStyle.visibility = "hidden";}

else cnt++;

//取得位置

function mEvn() {

x=event.x;

y=event.y;

if (document.body.scrollLeft)

{x=event.x+document.body.scrollLeft; y=event.y+document.body.scrollTop;}

if (snow){

dStyle.top = y+offsety

///////////////////////////////////////////////////////////////////////////

function changeTZ() {

setCookie("TZ",CLD.TZ.selectedIndex)

function tick() {

var today

today = new Date()

Clock.innerHTML = today.toLocaleString().replace(/(年|月)/g, "/").replace(/日/, "");

Clock.innerHTML = TimeAdd(today.toGMTString(), CLD.TZ.value)

window.setTimeout("tick()", 1000);

function setCookie(name, value) {

var today = new Date()

var expires = new Date()

document.cookie = name + "=" + escape(value) + "; expires=" + expires.toGMTString()

function getCookie(Name) {

var search = Name + "="

if(document.cookie.length 0) {

offset = document.cookie.indexOf(search)

if(offset != -1) {

offset += search.length

end = document.cookie.indexOf(";", offset)

if(end == -1) end = document.cookie.length

return unescape(document.cookie.substring(offset, end))

else return ""

/////////////////////////////////////////////////////////

function initial() {

dStyle = detail.style;

drawCld(tY,tM);

CLD.TZ.selectedIndex=getCookie("TZ");

changeTZ();

tick();

//--

/SCRIPT

SCRIPT language=VBScript

'===== 算世界时间

Function TimeAdd(UTC,T)

Dim PlusMinus, DST, y

If Left(T,1)="-" Then PlusMinus = -1 Else PlusMinus = 1

y = Year(UTC)

TimeAdd=CStr(DateAdd("h", 1, TimeAdd))

tSave.innerHTML = "R"

Else

tSave.innerHTML = ""

End If

TimeAdd = CStr(TimeAdd)

End Function

'--

STYLE.todyaColor {

BACKGROUND-COLOR: aqua

/STYLE

SCRIPT language=JavaScript!--

//--/SCRIPT

DIV id=detail style="POSITION: absolute"/DIV

CENTER

FORM name=CLD

TABLE

TBODY

TR

var enabled = 0; today = new Date();

var day; var date;

if(today.getDay()==0) day = "星期日"

if(today.getDay()==1) day = "星期一"

document.fgColor = "000000";

(today.getMonth() + 1 ) + "月 " + today.getDate() + "日 " +

day +"";

document.write(date)

value="+0000 格林威治时间、都柏林、爱丁堡、伦敦"英国夏令OPTION

value="+0000 莫洛维亚(赖比瑞亚)、卡萨布兰卡"格林威治标准OPTION

value="+0100 巴黎、马德里"罗马OPTION value="+0100 布拉格, 华沙, 布达佩斯"中欧OPTION

value="+0100 柏林、斯德哥尔摩、罗马、伯恩、布鲁赛尔、维也纳"西欧OPTION

怎么用java写日历

以下是两个类,请楼主分别存成两个java文件:

其中

MainFrame.java是显示日历程序,Clock.java是日历计算程序.编译后运行MainFrame这个类即可.

①MainFrame.java

---

import java.awt.BorderLayout;

import java.awt.Color;

import java.awt.GridLayout;

import java.awt.Toolkit;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Date;

import java.util.Calendar;

import javax.swing.JComboBox;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JPanel;

public class MainFrame extends JFrame {

/** *//**

*

*/

private static final long serialVersionUID = 1L;

JPanel panel = new JPanel(new BorderLayout());

JPanel panel1 = new JPanel();

JLabel y_label = new JLabel("年份");

JLabel m_label = new JLabel("月份");

JComboBox com1 = new JComboBox();

int re_year, re_month;

int x_size, y_size;

String year_num;

Calendar now = Calendar.getInstance(); // 实例化Calendar

MainFrame() {

super("万年历");

x_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getWidth());

y_size = (int) (Toolkit.getDefaultToolkit().getScreenSize().getHeight());

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

panel1.add(y_label);

panel1.add(com1);

panel1.add(m_label);

label[i] = new JLabel("", JLabel.CENTER);// 将显示的字符设置为居中

panel.add(panel1, BorderLayout.NORTH);

panel.setBackground(Color.white);

panel1.setBackground(Color.white);

Init();

com1.addActionListener(new ClockAction());

setContentPane(panel);

setVisible(true);

setResizable(false);

class ClockAction implements ActionListener {

public void actionPerformed(ActionEvent arg0) {

int c_year, c_month, c_week;

c_year = Integer.parseInt(com1.getSelectedItem().toString()); // 得到当前所选年份

c_week = use(c_year, c_month); // 调用函数use,得到星期几

Resetday(c_week, c_year, c_month); // 调用函数Resetday

public void Init() {

int year, month_num, first_day_num;

String log[] = { "日", "一", "二", "三", "四", "五", "六" };

label[i].setText(log[i]);

label[i].setForeground(Color.red); // 将星期日的日期设置为红色

label[i].setForeground(Color.green);// 将星期六的日期设置为绿色

for (int i = 1; i 10000; i++) {

com1.addItem("" + i);

month_num = (int) (now.get(Calendar.MONTH)); // 得到当前时间的月份

year = (int) (now.get(Calendar.YEAR)); // 得到当前时间的年份

com1.setSelectedIndex(year - 1); // 设置下拉列表显示为当前年

first_day_num = use(year, month_num);

Resetday(first_day_num, year, month_num);

public int use(int reyear, int remonth) {

int week_num;

now.set(reyear, remonth, 1); // 设置时间为所要查询的年月的第一天

week_num = (int) (now.get(Calendar.DAY_OF_WEEK));// 得到第一天的星期

return week_num;

@SuppressWarnings("deprecation")

public void Resetday(int week_log, int year_log, int month_log) {

int month_day_score; // 存储月份的天数

int count;

month_day_score = 0;

count = 1;

Date date = new Date(year_log, month_log + 1, 1); // now

Calendar cal = Calendar.getInstance();

cal.setTime(date);

cal.add(Calendar.MONTH, -1); // 前个月

month_day_score = cal.getActualMaximum(Calendar.DAY_OF_MONTH);// 最后一天

label[i].setText("");

month_day_score = month_day_score + week_log;

for (int i = week_log; i month_day_score; i++, count++) {

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

public static void main(String[] args) {

JFrame.setDefaultLookAndFeelDecorated(true);

new MainFrame();

-----

//显示时间的类:Clock

* Clock.java

* Summary 数字时间显示

* Created on

* @author

* remark

import java.awt.Canvas;

import java.awt.Font;

import java.awt.Graphics;

import java.text.SimpleDateFormat;

class Clock extends Canvas implements Runnable{

MainFrame mf;

Thread t;

String time;

public Clock(MainFrame mf){

this.mf=mf;

setBackground(Color.white);

t=new Thread(this); //实例化线程

t.start(); //调用线程

public void run(){

while(true){

try{

Thread.sleep(1000); //休眠1秒钟

}catch(InterruptedException e){

System.out.println("异常");

this.repaint(100);

public void paint(Graphics g){

SimpleDateFormat SDF=new SimpleDateFormat("yyyy'年'MM'月'dd'日'HH:mm:ss");//格式化时间显示类型

Calendar now=Calendar.getInstance();

time=SDF.format(now.getTime()); //得到当前日期和时间

g.setFont(f);

g.setColor(Color.orange);

java编写日历

我给你贴上我在java核心技术中看到的代码吧,当然没有输入年份和月份,是按照当前时间创建的,写有我写的注释,应该能看的懂

/*

* 日历程序

* Function:

* 显示当前月份的日历

* 总结

import java.text.DateFormatSymbols;

import java.util.*;

public class CalendarTest {

//construct d as current date构造一个日期

GregorianCalendar d = new GregorianCalendar();

//获取今天是这个月的第几天

int today = d.get(Calendar.DAY_OF_MONTH); //Calendar.DAY_OF_MONTH作为参数调用,得到今天是这个月的第几天

int month = d.get(Calendar.MONTH); //月份

d.set(Calendar.DAY_OF_MONTH, 1); //设置d的日期是本月的1号

int firstDayOfWeek = d.getFirstDayOfWeek(); //获取一星期的第一天,我们得到的是Calendar.SUNDAY,因为我们一星期的第一天是周日

int indent = 0; //为了定位本月第一天,定义索引

while (weekDay != firstDayOfWeek) {

//System.out.printf("当前星期的第%d天,位于当月的第%d天, 现在是%d月\n",

// weekDay, d.get(Calendar.DAY_OF_MONTH), d.get(Calendar.MONTH)+1); //Test Code

indent++;//缩进个数+1

d.add(Calendar.DAY_OF_MONTH, -1);//当前天数-1,如果现在是1号,则执行本条代码后,时间变为上一个月最后一天

weekDay = d.get(Calendar.DAY_OF_WEEK); //重新获取当天位于本星期的第几天

String[] weekDayNames = new DateFormatSymbols().getShortWeekdays();//获取简短形式的星期字符串数组

//注释代码1

//Java核心技术的代码

do {

d.add(Calendar.DAY_OF_MONTH, 1); //天数加1

weekDay = d.get(Calendar.DAY_OF_WEEK); //重新获得weekDay的值

} while (weekDay != firstDayOfWeek); //当循环完一个星期后,这里判断不成立,退出循环

//我写的代码,替换上面注释代码1

for (int i=1; iweekDayNames.length; i++)//打印星期标题

System.out.println();//换行

for (int i=1; i=indent; i++)//确定一星期的一天位置,利用上面indent

//实现输出日期

d.set(Calendar.MONTH, month);

d.set(Calendar.DAY_OF_MONTH, 1);

//print day

int day = d.get(Calendar.DAY_OF_MONTH);

if (day == today)

System.out.print("*");

System.out.print("\t");

d.add(Calendar.DATE, 1);//天数加1

weekDay = d.get(Calendar.DAY_OF_WEEK);//刷新weekDay

if (weekDay == firstDayOfWeek) //如果这天等于星期天则换行

System.out.println();

} while (d.get(Calendar.MONTH) == month);

JAVA日历代码,怎么做?

import java.util.Date;

import java.text.DateFormat;

java日历代码怎么写-图3

import java.text.ParseException;

import java.awt.Point;

import java.awt.Dimension;

import java.awt.FlowLayout;

import java.awt.Cursor;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JSpinner;

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;

/**

* @company:NEUSOFT

* @Title:日期选择控件

* @Description:在原有基础上修改了以下内容:

* 1. 将容器由Frame改为了Dialog,以便在基于对话框的程序中也能够使用

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));

addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

if (dateChooser == null)

dateChooser = new DateChooser();

Point p = getLocationOnScreen();

dateChooser.showDateChooser(p);

});

private static Date getNowDate() {

return Calendar.getInstance().getTime();

private static SimpleDateFormat getDefaultDateFormat() {

return new SimpleDateFormat("yyyy年MM月dd日");

// 覆盖父类的方法

public void setText(String s) {

Date date;

try {

date = getDefaultDateFormat().parse(s);

} catch (ParseException e) {

date = getNowDate();

public void setText(SimpleDateFormat df, String s) {

date = df.parse(s);

public void setDate(Date date) {

super.setText(preLabel + getDefaultDateFormat().format(date));

public Date getDate() {

String dateString = this.getText().substring(preLabel.length());

return getDefaultDateFormat().parse(dateString);

return getNowDate();

public String getDateString()

{

Date birth =getDate();

DateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");

return formatDate.format(birth).toString();

//return this.getText().substring(preLabel.length());

// 覆盖父类的方法使之无效

//public void addActionListener(ActionListener listener) {

//}

private class DateChooser extends JPanel implements ActionListener,

ChangeListener {

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;

DateChooser() {

setLayout(new BorderLayout());

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.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,

monthSpin.setName("Month");

monthSpin.addChangeListener(this);

result.add(monthSpin);

JLabel monthLabel = new JLabel("月");

monthLabel.setForeground(controlTextColor);

result.add(monthLabel);

①.));

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[] = { "日", "一", "二", "三", "四", "五", "六" };

// 设置固定字体,以免调用环境改变影响界面美观

result.setBackground(Color.white);

JLabel cell;

cell = new JLabel(colname[i]);

cell.setHorizontalAlignment(JLabel.RIGHT);

cell.setForeground(weekendFontColor);

cell.setForeground(weekFontColor);

result.add(cell);

int actionCommandId = 0;

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);

numberButton.setForeground(weekendFontColor);

daysButton[i][j] = numberButton;

result.add(numberButton);

actionCommandId++;

private JDialog createDialog(JDialog 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);

void showDateChooser(Point position) {

JDialog owner = (JDialog) SwingUtilities

.getWindowAncestor(DateChooserJButton.this);

if (dialog == null || dialog.getOwner() != owner)

dialog = createDialog(owner);

dialog.setLocation(getAppropriateLocation(owner, position));

flushWeekAndDay();

dialog.setVisible(true);

Point getAppropriateLocation(JDialog 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;

private Calendar getCalendar() {

Calendar result = Calendar.getInstance();

result.setTime(getDate());

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) {

int day = c.get(Calendar.DAY_OF_MONTH);

c.set(Calendar.DAY_OF_MONTH, 1);

if (isOldDay)

daysButton[i][j].setForeground(dateFontColor);

daysButton[i][j].setForeground(todayBackColor);

private void flushWeekAndDay() {

int maxDayNo = c.getActualMaximum(Calendar.DAY_OF_MONTH);

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();

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());

// (source.getName().equals("Month"))

c.set(Calendar.MONTH, getSelectedMonth() - 1);

JButton source = (JButton) e.getSource();

if (source.getText().length() == 0)

source.setForeground(todayBackColor);

int newDay = Integer.parseInt(source.getText());

c.set(Calendar.DAY_OF_MONTH, newDay);

这是一个专门的选日期的类 ,你看看完了调用就行了

用java写个日历程序怎么写,请给出详细步骤,谢谢

package?com.baidu.calendar;

import?java.awt.BorderLayout;

import?java.awt.Color;

import?java.awt.FlowLayout;

import?java.awt.Font;

import?java.awt.GridLayout;

import?java.awt.event.ItemEvent;

import?java.awt.event.ItemListener;

import?java.text.DateFormat;

import?java.text.SimpleDateFormat;

import?java.util.Calendar;

import?javax.swing.JComboBox;

import?javax.swing.JFrame;

import?javax.swing.JLabel;

import?javax.swing.JPanel;

import?javax.swing.border.CompoundBorder;

import?javax.swing.border.EmptyBorder;

import?javax.swing.border.LineBorder;

public?class?CalendarInterface?extends?JFrame?{

private?static?final?long?serialVersionUID?=?1L;

private?JComboBox?yearBox,?monthBox;

private?JPanel?topPane,?contentPane;

private?JPanel?bottomPane,?bottomTopPane,?mainPane;

private?JLabel?dateLabel;

private?boolean?init?=?false;

private?Calendar?cal;

private?static?final?Calendar?NOW?=?Calendar.getInstance();

private?static?final?String[]?DAY_OF_WEEK?=?{"星期日",?"星期一",?"星期二",

"星期三",?"星期四",?"星期五",?"星期六"};

private?DateFormat?df?=?new?SimpleDateFormat("yyyy年MM月");

private?static?final?Color?FONT_GRAY?=?new?Color(0xaa,?0xaa,?0xaa);

private?static?final?int?DATE_GRAY?=?-1;

private?static?final?int?DATE_RED?=?1;

private?static?final?int?DATE_BLACK?=?0;

public?CalendarInterface()?{

super("日历");

cal?=?Calendar.getInstance();

cal.setFirstDayOfWeek(Calendar.SUNDAY);

public?void?launch()?{

setDefaultCloseOperation(EXIT_ON_CLOSE);

//?主面板

contentPane?=?new?JPanel(new?BorderLayout());

contentPane.setBackground(Color.WHITE);

//?顶部选择日期和月份的区域

topPane.setBorder(new?EmptyBorder(0,?0,?10,?0));?//?底部空出10px

topPane.setBackground(Color.WHITE);

//?底部显示星期条和日历列表区域

bottomPane?=?new?JPanel(new?BorderLayout());

bottomPane.setBorder(new?LineBorder(Color.BLACK,?1));

//?星期条

//?日期列表

mainPane?=?new?JPanel();

for(int?i?=?Calendar.SUNDAY;?i?=?Calendar.SATURDAY;?i?++)?{

bottomTopPane.add(createDay(DAY_OF_WEEK[i?-?1]));

bottomPane.add(bottomTopPane,?BorderLayout.NORTH);?//?星期栏放在顶部

//?年份下拉列表

yearBox?=?new?JComboBox();

int?currentYear?=?cal.get(Calendar.YEAR);

for(int?i?=?currentYear?-?YEAR_RANGE;?i?currentYear?+?YEAR_RANGE?+?1;?i?++)?{

yearBox.addItem(i);

yearBox.addItemListener(new?ItemListener()?{

@Override

public?void?itemStateChanged(ItemEvent?e)?{

if(ItemEvent.SELECTED?==?e.getStateChange())?{

reset();?//?选择后刷新布局

yearBox.setSelectedIndex(YEAR_RANGE);?//?默认选中当前年份

//?月份下拉列表

monthBox?=?new?JComboBox(months);

monthBox.addItemListener(new?ItemListener()?{

reset();?//刷新布局

monthBox.setSelectedIndex(cal.get(Calendar.MONTH));?//?选择当前月份

//?显示当前年月的控件

this.dateLabel?=?new?JLabel(df.format(cal.getTime()));

topPane.add(yearBox);

topPane.add(monthBox);

topPane.add(dateLabel);

contentPane.add(topPane,?BorderLayout.NORTH);

bottomPane.add(mainPane,?BorderLayout.CENTER);

contentPane.add(bottomPane,?BorderLayout.CENTER);

setContentPane(contentPane);

validate();

init?=?true;?//?初始化完成

reset();?//?刷新界面

setLocationRelativeTo(null);?//?居中显示

public?static?void?main(String[]?args)?{

new?CalendarInterface().launch();

private?void?reset()?{?//?每次年份或月份改变后则日历重新排列

if(!init)?{?//?若未初始化则返回,避免设置默认年月时调用此方法出错

int?year?=?(Integer)?yearBox.getSelectedItem();

int?month?=?Integer.parseInt((String)?monthBox.getSelectedItem());

//?将日期设置为本月第一天

cal.set(Calendar.YEAR,?year);

cal.set(Calendar.MONTH,?month?-?1);

cal.set(Calendar.DATE,?1);

dateLabel.setText(df.format(cal.getTime()));?//?显示年月

mainPane.removeAll();?//?清空日历列表

//?判断本月第一天是星期几,在第一天之前增加空的日历

int?startDayOfWeek?=?cal.get(Calendar.DAY_OF_WEEK);

int?i;

//?先设置为本周属于上个月的几天,置灰显示

cal.add(Calendar.DATE,?-(startDayOfWeek?-?Calendar.SUNDAY)?-?1);

for(i?=?Calendar.SUNDAY;?i?startDayOfWeek;?i?++)?{

cal.add(Calendar.DATE,?1);

int?date?=?cal.get(Calendar.DATE);

mainPane.add(createDate(Integer.toString(date),?DATE_GRAY));

i?=?startDayOfWeek;

//?重新初始化为本月第一天

int?maxDate?=?cal.getActualMaximum(Calendar.DATE);?//?本月最多的天数(不用再去判断是否闰年了)

for(int?j?=?1;?j?=?maxDate;?j?++)?{

cal.set(Calendar.DATE,?j);?//?日期一直自增,用来判断是否是今天

JLabel?jlDate?=?null;

if(isToday())?{?//?是今天则高亮显示

jlDate?=?createDate(Integer.toString(j),?DATE_RED);

}?else?{?//?不是今天则显示为普通颜色

jlDate?=?createDate(Integer.toString(j));

mainPane.add(jlDate);

//?最后一周把不属于本月的几天用灰色控件填充

int?lastDay?=?cal.get(Calendar.DAY_OF_WEEK);

for(i?=?lastDay;?i?Calendar.SATURDAY;?i?++)?{

mainPane.validate();

private?JLabel?createDate(String?date)?{

return?createDate(date,?DATE_BLACK);

//?创建日期控件

private?JLabel?createDate(String?date,?int?dateColor)?{

JLabel?label?=?new?JLabel(date,?JLabel.CENTER);

CompoundBorder?border?=?new?CompoundBorder(

new?LineBorder(Color.WHITE,?1),

new?EmptyBorder(10,?10,?10,?10));

label.setBorder(border);

if(DATE_GRAY?==?dateColor)?{?//?如果不是本月则文字置灰

label.setForeground(FONT_GRAY);

}?else?if(DATE_RED?==?dateColor)?{?//?如果是今天则高亮显示

label.setForeground(Color.RED);

label.setFont(font);

return?label;

//?创建星期几的横条

private?JLabel?createDay(String?day)?{

JLabel?jlDay?=?new?JLabel(day,?JLabel.CENTER);

jlDay.setBackground(Color.GRAY);

jlDay.setForeground(Color.WHITE);

return?jlDay;

//?判断是否今天

private?boolean?isToday()?{

return?cal.get(Calendar.YEAR)?==?NOW.get(Calendar.YEAR)

cal.get(Calendar.MONTH)?==?NOW.get(Calendar.MONTH)

cal.get(Calendar.DATE)?==?NOW.get(Calendar.DATE);

java语言编写日历

public class calendar

public static void main(String[] args)

new calendar().makeCalendar();

public void makeCalendar()

int i;

int j;

int year = 0;

int month = 0;

int week = 0;

int totalDay = 0;

Scanner scanner = new Scanner(System.in);

Calendar ca = Calendar.getInstance();

printAsterisk();

System.out.print("欢 迎 使 用 万 年 历");

System.out.print("\n\n请输入年份:");

year = scanner.nextInt();

System.out.print("\n\n请输入月份:");

month = scanner.nextInt() ;

ca.set(year, month - 1,1);

week = ca.get(Calendar.DAY_OF_WEEK)-1;//获取输入月第一天是星期几

totalDay = calculatetotalDay(year , month);

if(judgeLeap_year(year))

totalDay = calculatetotalDay(year , month) + 1;//如果是闰年,加一天

System.out.println("\n\n\n星期日\t星期一\t星期二\t星期三\t星期四\t星期五\t星期六");

for(i = 0;i week;i++)

System.out.print(i + "\t");

System.out.print(i+"\t");

public void printAsterisk()

//获取输入月的天数

public int calculatetotalDay(int year ,int month)

int result = 0;

switch (month)

case 1:

//判断闰年

public boolean judgeLeap_year(int year)

return true;

return false;

以上就是土嘎嘎小编为大家整理的java日历代码怎么写相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章