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

Java实现简单日历代码

作者:小编 更新时间:2023-10-21 13:31:11 浏览量:34人看过

编写JAVA程序实现一个简单的日历(高分求高手)(追加分)

import java.awt.*;

import java.awt.event.*;

Java实现简单日历代码-图1

import java.util.*;

import javax.swing.*;

import javax.swing.event.*;

import javax.swing.table.*;

public class MyCalendar extends JApplet {

public static final String WEEK_SUN = "SUN";

public static final String WEEK_MON = "MON";

public static final String WEEK_TUE = "TUE";

public static final String WEEK_WED = "WED";

Java实现简单日历代码-图2

public static final String WEEK_THU = "THU";

public static final String WEEK_FRI = "FRI";

public static final String WEEK_SAT = "SAT";

public static final Color background = Color.white;

public static final Color foreground = Color.black;

public static final Color headerBackground = Color.blue;

public static final Color headerForeground = Color.white;

public static final Color selectedBackground = Color.blue;

public static final Color selectedForeground = Color.white;

private JPanel cPane;

private JLabel yearsLabel;

private JSpinner yearsSpinner;

private JLabel monthsLabel;

private JComboBox monthsComboBox;

private JTable daysTable;

private AbstractTableModel daysModel;

private Calendar calendar;

public MyCalendar() {

cPane = (JPanel) getContentPane();

}

public void init() {

cPane.setLayout(new BorderLayout());

calendar = Calendar.getInstance();

yearsLabel = new JLabel("Year: ");

yearsSpinner = new JSpinner();

yearsSpinner.setEditor(new JSpinner.NumberEditor(yearsSpinner, "0000"));

yearsSpinner.setValue(new Integer(calendar.get(Calendar.YEAR)));

yearsSpinner.addChangeListener(new ChangeListener() {

public void stateChanged(ChangeEvent changeEvent) {

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

calendar.set(Calendar.DAY_OF_MONTH, 1);

calendar.set(Calendar.YEAR, ((Integer) yearsSpinner.getValue()).intValue());

int maxDay = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

calendar.set(Calendar.DAY_OF_MONTH, day maxDay ? maxDay : day);

updateView();

});

JPanel yearMonthPanel = new JPanel();

cPane.add(yearMonthPanel, BorderLayout.NORTH);

yearMonthPanel.setLayout(new BorderLayout());

yearMonthPanel.add(new JPanel(), BorderLayout.CENTER);

JPanel yearPanel = new JPanel();

yearMonthPanel.add(yearPanel, BorderLayout.WEST);

yearPanel.setLayout(new BorderLayout());

yearPanel.add(yearsLabel, BorderLayout.WEST);

yearPanel.add(yearsSpinner, BorderLayout.CENTER);

monthsLabel = new JLabel("Month: ");

monthsComboBox = new JComboBox();

monthsComboBox.addItem(new Integer(i));

monthsComboBox.setSelectedIndex(calendar.get(Calendar.MONTH));

monthsComboBox.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent actionEvent) {

calendar.set(Calendar.MONTH, monthsComboBox.getSelectedIndex());

JPanel monthPanel = new JPanel();

yearMonthPanel.add(monthPanel, BorderLayout.EAST);

monthPanel.setLayout(new BorderLayout());

monthPanel.add(monthsLabel, BorderLayout.WEST);

monthPanel.add(monthsComboBox, BorderLayout.CENTER);

daysModel = new AbstractTableModel() {

public int getRowCount() {

public int getColumnCount() {

public Object getValueAt(int row, int column) {

if (row == 0) {

return getHeader(column);

row--;

Calendar calendar = (Calendar) MyCalendar.this.calendar.clone();

int dayCount = calendar.getActualMaximum(Calendar.DAY_OF_MONTH);

int moreDayCount = calendar.get(Calendar.DAY_OF_WEEK) - 1;

int dayIndex = index - moreDayCount + 1;

if (index moreDayCount || dayIndex dayCount) {

return null;

} else {

return new Integer(dayIndex);

};

daysTable = new CalendarTable(daysModel, calendar);

daysTable.setCellSelectionEnabled(true);

daysTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

daysTable.setDefaultRenderer(daysTable.getColumnClass(0), new TableCellRenderer() {

public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected,

boolean hasFocus, int row, int column) {

String text = (value == null) ? "" : value.toString();

JLabel cell = new JLabel(text);

cell.setOpaque(true);

cell.setForeground(headerForeground);

cell.setBackground(headerBackground);

if (isSelected) {

cell.setForeground(selectedForeground);

cell.setBackground(selectedBackground);

cell.setForeground(foreground);

cell.setBackground(background);

return cell;

cPane.add(daysTable, BorderLayout.CENTER);

public static String getHeader(int index) {

switch (index) {

case 0:

return WEEK_SUN;

case 1:

return WEEK_MON;

return WEEK_TUE;

return WEEK_WED;

return WEEK_THU;

return WEEK_FRI;

return WEEK_SAT;

default:

public void updateView() {

daysModel.fireTableDataChanged();

daysTable.setRowSelectionInterval(calendar.get(Calendar.WEEK_OF_MONTH),

calendar.get(Calendar.WEEK_OF_MONTH));

daysTable.setColumnSelectionInterval(calendar.get(Calendar.DAY_OF_WEEK) - 1,

calendar.get(Calendar.DAY_OF_WEEK) - 1);

public static class CalendarTable extends JTable {

public CalendarTable(TableModel model, Calendar calendar) {

super(model);

this.calendar = calendar;

public void changeSelection(int row, int column, boolean toggle, boolean extend) {

super.changeSelection(row, column, toggle, extend);

return;

Object obj = getValueAt(row, column);

if (obj != null) {

calendar.set(Calendar.DAY_OF_MONTH, ((Integer)obj).intValue());

public static void main(String[] args) {

JFrame frame = new JFrame("Calendar Application");

frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

MyCalendar myCalendar = new MyCalendar();

myCalendar.init();

frame.getContentPane().add(myCalendar);

frame.show();

帮忙用JAVA编写一个简单的日历

这是我几年前写的

import?java.util.ArrayList;

import?java.util.Calendar;

import?java.util.List;

public?class?$?{

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

long?l1?=?System.currentTimeMillis();

for?(int?i?=?0;?i?data.size();?i++)?{

System.out.println(data.get(i));

private?static?List?rili(int?startYear,?int?startMonth,?int?endYear,?int?endMonth)?{

if?(startYear?endYear?||?(startYear?==?endYear?startMonth?endMonth))?{

return?null;

List?data?=?new?ArrayList();

for?(int?ii?=?startYear;?ii?=?endYear;?ii++)?{

int?startM?=?startMonth?-?1;

int?endM?=?endMonth?-?1;

if?(startYear?endYear)?{

if?(ii?==?endYear)?{

endM?=?11;

}?else?{

startM?=?0;

for?(int?i?=?startM;?i?=?endM;?i++)?{

data.add("-----------------------"?+?ii?+?"年"?+?(i?+?1)?+?"月-----------------------");

data.add("日\t一\t二\t三\t四\t五\t六");

int?day?=?days(ii,?i);

StringBuffer?buf?=?new?StringBuffer();

int?idx?=?1;

while?(idx?=?day)?{

int?len?=?0;

if?(idx?==?1)?{

Calendar?c?=?Calendar.getInstance();

c.set(ii,?i,?idx);

int?xingqi?=?c.get(Calendar.DAY_OF_WEEK);

len?=?getLen(xingqi);

buf.append(addBlank(len));

buf.append(idx++);

if?(idx?day)?{

break;

buf.append("\t"?+?(idx++));

buf.append("\n");

data.add(buf);

return?data;

private?static?StringBuffer?addBlank(int?len)?{

for?(int?index?=?0;?index?len;?index++)?{

buf.append("\t");

return?buf;

private?static?int?getLen(int?xingqi)?{

return?xingqi?==?Calendar.SUNDAY?0?:?xingqi?-?1;

public?static?int?days(int?year,?int?month)?{

if?(month?!=?1)?{

return?DAYS[month];

怎样用java编写日历

HTML

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

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

SCRIPT language=JavaScript

!--

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

日期资料

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

var lunarInfo=new Array(

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

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

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

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

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;

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

Java实现简单日历代码-图3

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

如何用JAVA写日历?

按照你的要求编写的Java日历验证程序如下

UI.java

import?java.util.Scanner;

public?class?UI?{

static?Scanner?sc=new?Scanner(System.in);

public?static?int?askInt(String?s){

System.out.print(s);

return?sc.nextInt();

public?static?void?println(String?s){

System.out.println(s);

EE.java

public?class?EE?{

public?void?validateDateCore(){

int?year?=UI.askInt("Enter?the?year:?");

int?month=UI.askInt("Enter?the?month:?");

int?day=UI.askInt("Enter?the?day:?");

if(year?1){

UI.println("The?year?is?not?a?valid?number.");

UI.println("The?month?is?not?a?valid?number.");

int?monthDay=0;

switch(month){

case?1:

case?10:

}else{

if(day1?||?daymonthDay){

UI.println("The?day?is?not?a?valid?number.");

UI.println("It?is?"+day+"/"+month+"/"+year+".");

new?EE().validateDateCore();

运行结果

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

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

编辑推荐

热门文章