java风景日历
java日历设计报告参考模板
华东交通大学理工学院课程设计报告书所属课程名称 java语言程序设计课程设计题目利用java完成日历的制作分院电信分院专业班级电商二班学号 20120410210129学生姓名方槐指导教师葛菁20 13 年12 月29 日课程设计(论文)评阅意见评阅人职称20 年月日目录第1章课程设计内容及要求. (4)第2章编写程序及结果 (5)第3章课程设计心得 (11)第4章参考文献 (12)第一章课程设计内容及要求内容一设计内容利用java程序编写我们生活中的经常使用的日历,当你想看哪个月的具体情况时,只需运行我们的程序就可以达到目的。
二要求内容利用我们所学的编写一个简单的日历表三设计原理运用课堂所学知识和上机课的练习的基础上在Java运行环境JCreaor中编写程序,还有在课外自己学的扫描仪。
四设计目的1.运用我们自学的扫描仪实现我们的操作。
2.该日历可以实现与生活中的日历一样。
3.先随机输入几年,随机输入几月,就能显示当月的天数,每一天的星期第二章编写程序及结果一程序编程Import java.util.Scanner;public class Qsr_2013{public static void main(String[] args){Scanner in=new Scanner(System.in);System.out.println("请输入月份:");int month=in.nextInt();int sum=0;for(int i=1;i<month;i++){if(i==2){if(year%4==0&&year%100!=0||year%400==0){sum+=29;}else{sum+=28;}}else{if(i==4||i==6||i==9||i==11){sum+=30;}else{sum+=31;}}}sum+=1;int wekday=sum%7;System.out.println("日\t一\t二\t三\t四\t五\t六"); for(int i=1;i<=wekday;i++){System.out.print("\t");}for(int i=1;i<=30;i++){if(sum%7==6){System.out.print(i+"\n");}else{System.out.print(i+"\t");}sum++;}}}二运行结果来两张程序截图先确定下没有错误的2013年输入月份然后运行 1月哦4月来张第三章心得通过这次课程设计,使我灵活应用所学java知识,独立完成问题分析,结合数据结构理论知识,编写程序求解指定问题。
java课程设计策画日历记事本
课程设计说明书课程: Java程序设计院系:计算机科学学院专业班级:计算机科学与技术(2)班组员:张少华、张天阳2010年6月 26 日《Java程序设计》课程设计——日历记事本我们开发了一个实现有日历标记的记事本软件,日历记事本面板由日历和和记事本两部分组成。
日历部分可以调节年份,月份,日期,星期。
记事本可以实行查看,保存,删除等操作,并且每一步操作都有相应提示。
本软件是一个实用性很强,简洁,方便的功能软件。
引言Java是一种纯面向对象的、网络编程首选的语言。
Java技术作为软件开的一种革命性技术,已被列为当今世界信息技术的主流之一。
为了适应时代潮流,我们应该加强对Java的学习,更好的掌握这门课程。
为此,我们成了一个课程小组,经过小组成的商讨之后,我们决定以“日历记事本”为设题材,借此巩固加深我们对Java 的了解。
本次课程设计的实例虽然比较简单,程序设计也不是很复杂,但在此程序的设计过程也是一个学习过程,更是对复杂程序的一个学习过程,还能培养我们的数抽象能力。
因此,我们觉得这次课程设计是非常有意义的,能为我们今后学习面向过程的程序设计作一些铺垫。
1、设计的目的与要求;(1)为用户提供一个简便的日历记事本;(2)对java技术的进一步了解和简单的运用;(3)初步的接触软件工程;2.设计目的与任务本课程设计所要求达到的目的和任务:通过Java程序设计的一些重要理论基础来实现“日历记事本”的“日历”和“记事本”的双重功能。
并通过此次课程设计的训练,使学生巩固和加深对Java这门课程的理解,通过利用所学到的计算科学的理论知识,提高解决实际问题的能力,增强运算、编程和使用技术资料的技能,通过实际问题的分析设计、编程和调试,掌握应用软件的分析方法和工程设计方法,能正确阐述设计和实验结果。
通过这次课程设计,培养实事求是、认真、严谨的科学态度和刻苦钻研不断创新的精神,逐步建立正确的全局观念。
3.设计方案3.1 总体设计(1)问题定义:创建日历记事本,实现对某日期的事情进行记录等功能。
精美日历的程序设计及代码示例
精美日历的程序设计及代码示例一、引言日历是我们日常生活中重要的时间管理工具。
一个精美美观的日历设计可以提升用户的使用体验。
本文将介绍精美日历的程序设计方法以及相应的代码示例。
二、设计思路1. 日历显示界面设计精美日历应该具备以下设计要素:- 界面简洁明了,突出重要信息;- 适配不同设备屏幕尺寸,保证用户在不同设备上都能良好显示;- 使用合适的字体、颜色和布局,营造舒适的阅读体验;- 支持用户自定义主题,以满足不同用户的个性化需求。
2. 日历功能设计精美日历的功能设计要考虑以下几点:- 显示当前日期以及所在月份,方便用户快速查看;- 支持切换月份,以便查看过去或未来的日期;- 标记重要日期,例如节假日、生日等,以便用户一目了然;- 提供日程管理功能,允许用户添加、编辑和删除日程安排;- 支持农历显示,满足中国用户的需求。
三、代码示例下面是一个简单的精美日历的代码示例,代码使用HTML、CSS和JavaScript编写。
```<!DOCTYPE html><html><head><title>精美日历</title><style>/* CSS样式 *//* 省略部分样式代码,包括字体、颜色和布局等 */</style></head><body><div id="calendar"><div id="header"><button id="prevBtn">上个月</button><div id="title"></div><button id="nextBtn">下个月</button> </div><table id="days"><tr><th>周一</th><th>周二</th><th>周三</th><th>周四</th><th>周五</th><th>周六</th><th>周日</th></tr><!-- 日期格子动态生成 --></table></div><script>// JavaScript代码// 获取当前日期var date = new Date();var currentYear = date.getFullYear();var currentMonth = date.getMonth() + 1;// 标记重要日期var importantDates = [5, 10, 15];// 更新日历显示function updateCalendar(year, month) {// 更新标题document.getElementById("title").innerHTML = year + "年" + month + "月";// 清空日期格子var table = document.getElementById("days");table.getElementsByTagName("tbody")[0].innerHTML = "";// 获取本月第一天的日期对象var firstDay = new Date(year, month - 1, 1);var startDay = firstDay.getDay(); // 本月第一天是星期几// 动态生成日期格子var dateIndex = 1;var tr = document.createElement("tr");for (var i = 0; i < startDay; i++) {tr.innerHTML += "<td></td>";}while (firstDay.getMonth() === month - 1) {if (startDay === 0) {table.getElementsByTagName("tbody")[0].appendChild(tr); tr = document.createElement("tr");}var td = document.createElement("td");td.innerHTML = dateIndex;if (importantDates.includes(dateIndex)) {td.classList.add("important"); // 添加重要日期样式}tr.appendChild(td);dateIndex++;firstDay.setDate(firstDay.getDate() + 1);startDay = firstDay.getDay();}table.getElementsByTagName("tbody")[0].appendChild(tr);}// 切换月份document.getElementById("prevBtn").addEventListener("click", function() {if (currentMonth === 1) {currentYear--;currentMonth = 12;} else {currentMonth--;}updateCalendar(currentYear, currentMonth);});document.getElementById("nextBtn").addEventListener("click", function() {if (currentMonth === 12) {currentYear++;currentMonth = 1;} else {currentMonth++;}updateCalendar(currentYear, currentMonth);});// 初始化日历updateCalendar(currentYear, currentMonth);</script></body></html>```四、总结本文介绍了精美日历的程序设计方法及相应的代码示例。
JavaFX实现简单日历效果
JavaFX实现简单⽇历效果本⽂实例为⼤家分享了JavaFX实现简单⽇历效果的具体代码,供⼤家参考,具体内容如下1.先看效果:2.代码:1)ClockEdge.java类这个类(Pane)主要是⽤来设置时钟边缘(为了美观对直了半天,其实想想也没必要~。
~)package com.javaBasic.javaFX;import yout.Pane;import javafx.scene.paint.Color;import javafx.scene.shape.Circle;import javafx.scene.shape.Line;import javafx.scene.text.Text;/*** @version 1.00 2016-10-15* @author Administrator* 功能:显⽰时钟边缘*/public class ClockEdge extends Pane{private double w , h;public ClockEdge(){this(200, 200);paint();}public ClockEdge(double w, double h){this.w = w;this.h = h;paint();}public double getW() {return w;}public void setW(double w) {this.w = w;paint();}public double getH() {return h;}public void setH(double h) {this.h = h;paint();}public void paint(){double clockRadius = Math.min(w, h) * 0.8 * 0.5;double centerX = w / 2;double centerY = h / 2;Circle circle = new Circle(centerX, centerY, clockRadius);circle.setFill(Color.WHITE);circle.setStroke(Color.BLACK);//假设⼀个字符宽7.6个像素,⾼8.8个像素Text text1 = new Text(centerX + clockRadius * Math.sin(1 * Math.PI / 6) - 7.6 + 1.7 * (1 + Math.cos(2 * Math.PI / 6)) - 2.2 * Math.sin(2 * Math.PI / 6), centerY - clockRadius * Math.cos(1 * Math.PI / 6) + 8.8 + 1.7 * Math.sin(2 * Math.PI / 6) - 2.2 * (1 - Math.cos(2 * Math.PI / 6)), "1");Text text2 = new Text(centerX + clockRadius * Math.sin(2 * Math.PI / 6) - 7.6 + 1.7 * (1 + Math.cos(4 * Math.PI / 6)) - 2.2 * Math.sin(4 * Math.PI / 6), centerY - clockRadius * Math.cos(2 * Math.PI / 6) + 8.8 + 1.7 * Math.sin(4 * Math.PI / 6) - 2.2 * (1 - Math.cos(4 * Math.PI / 6)), "2");centerY - clockRadius * Math.cos(3 * Math.PI / 6) + 8.8 + 1.7 * Math.sin(6 * Math.PI / 6) - 2.2 * (1 - Math.cos(6 * Math.PI / 6)), "3");Text text4 = new Text(centerX + clockRadius * Math.sin(4 * Math.PI / 6) - 7.6 + 1.7 * (1 + Math.cos(8 * Math.PI / 6)) + 2.2 * Math.sin(8 * Math.PI / 6), centerY - clockRadius * Math.cos(4 * Math.PI / 6) + 1.7 * Math.sin(8 * Math.PI / 6) + 2.2 * (1 - Math.cos(8 * Math.PI / 6)), "4");Text text5 = new Text(centerX + clockRadius * Math.sin(5 * Math.PI / 6) - 7.6 + 1.7 * (1 + Math.cos(10 * Math.PI / 6)) + 2.2 * Math.sin(10 * Math.PI / 6), centerY - clockRadius * Math.cos(5 * Math.PI / 6) + 1.7 * Math.sin(10 * Math.PI / 6) + 2.2 * (1 - Math.cos(10 * Math.PI / 6)), "5");Text text6 = new Text(centerX + clockRadius * Math.sin(6 * Math.PI / 6) - 7.6 + 1.7 * (1 + Math.cos(12 * Math.PI / 6)) + 2.2 * Math.sin(12 * Math.PI / 6), centerY - clockRadius * Math.cos(6 * Math.PI / 6) + 1.7 * Math.sin(12 * Math.PI / 6) + 2.2 * (1 - Math.cos(12 * Math.PI / 6)), "6");Text text7 = new Text(centerX + clockRadius * Math.sin(7 * Math.PI / 6) - 1.7 * (1 + Math.cos(14 * Math.PI / 6)) + 2.2 * Math.sin(14 * Math.PI / 6),centerY - clockRadius * Math.cos(7 * Math.PI / 6) - 1.7 * Math.sin(14 * Math.PI / 6) + 2.2 * (1 - Math.cos(14 * Math.PI / 6)), "7");Text text8 = new Text(centerX + clockRadius * Math.sin(8 * Math.PI / 6) - 1.7 * (1 + Math.cos(16 * Math.PI / 6)) + 2.2 * Math.sin(16 * Math.PI / 6),centerY - clockRadius * Math.cos(8 * Math.PI / 6) - 1.7 * Math.sin(16 * Math.PI / 6) + 2.2 * (1 - Math.cos(16 * Math.PI / 6)), "8");Text text9 = new Text(centerX + clockRadius * Math.sin(9 * Math.PI / 6) - 1.7 * (1 + Math.cos(18 * Math.PI / 6)) + 2.2 * Math.sin(18 * Math.PI / 6),centerY - clockRadius * Math.cos(9 * Math.PI / 6) - 1.7 * Math.sin(18 * Math.PI / 6) + 2.2 * (1 - Math.cos(18 * Math.PI / 6)), "9");Text text10 = new Text(centerX + clockRadius * Math.sin(10 * Math.PI / 6) - 3.8 * (1 + Math.cos(20 * Math.PI / 6)) - 2.2 * Math.sin(20 * Math.PI / 6),centerY - clockRadius * Math.cos(10 * Math.PI / 6) + 8.8 - 3.8 * Math.sin(20 * Math.PI / 6) - 2.2 * (1 - Math.cos(20 * Math.PI / 6)), "10");Text text11 = new Text(centerX + clockRadius * Math.sin(11 * Math.PI / 6) - 3.8 * (1 + Math.cos(22 * Math.PI / 6)) - 2.2 * Math.sin(22 * Math.PI / 6),centerY - clockRadius * Math.cos(11 * Math.PI / 6) + 8.8 - 3.8 * Math.sin(22 * Math.PI / 6) - 2.2 * (1 - Math.cos(22 * Math.PI / 6)), "11");Text text12 = new Text(centerX + clockRadius * Math.sin(12 * Math.PI / 6) - 3.8 * (1 + Math.cos(24 * Math.PI / 6)) - 2.2 * Math.sin(24 * Math.PI / 6),centerY - clockRadius * Math.cos(12 * Math.PI / 6) + 8.8 - 3.8 * Math.sin(24 * Math.PI / 6) - 2.2 * (1 - Math.cos(24 * Math.PI / 6)), "12");getChildren().addAll(circle, text1, text2, text3, text4, text5, text6, text7, text8, text9, text10, text11, text12);for(int i =1; i<= 60; i++){double pointX1 = centerX + clockRadius * 0.95 * Math.sin(i * (2 * Math.PI) / 60);double pointY1 = centerY - clockRadius * 0.95 * Math.cos(i * (2 * Math.PI) / 60);double pointX2 = centerX + clockRadius * 1.0 * Math.sin(i * (2 * Math.PI) / 60);double pointY2 = centerY - clockRadius * 1.0 * Math.cos(i * (2 * Math.PI) / 60);if(i % 5 == 0) continue;else{Line point = new Line(pointX1, pointY1, pointX2, pointY2);getChildren().add(point);}}}}2)ClockPointer.java类这个类(Pane)主要⽤来显⽰时钟的三个指针(时、分、秒);package com.javaBasic.javaFX;import java.util.Calendar;import java.util.GregorianCalendar;import yout.Pane;import javafx.scene.paint.Color;import javafx.scene.shape.Line;/*** @version 1.00 2016-10-15* @author Administrator* 功能:显⽰时钟指针*/public class ClockPointer extends Pane{private int hour;private int minute;private int second;private double w = 200, h = 200;public ClockPointer(){setCurrentTime();}public ClockPointer(int hour, int minute, int second){this.hour = hour;this.minute = minute;this.second = second;paint();}public int getHour(){return hour;}public void setHour(int hour){this.hour = hour;paint();}public int getMinute(){return minute;}public void setMinute(int minute){paint();}public int getSecond(){return second;}public void setSecond(int second){this.second = second;paint();}public double getW() {return w;}public void setW(double w) {this.w = w;paint();}public double getH() {return h;}public void setH(double h) {this.h = h;paint();}public String setCurrentTime(){String str1, str2, str3;Calendar calendar = new GregorianCalendar();this.hour = calendar.get(Calendar.HOUR_OF_DAY);this.minute = calendar.get(Calendar.MINUTE);this.second = calendar.get(Calendar.SECOND);str1 = String.valueOf(hour);str2 = String.valueOf(minute);str3 = String.valueOf(second);if (hour < 10) {str1 = "0" + hour;}if (minute < 10) {str2 = "0" + minute;}if (second < 10) {str3 = "0" + second;}paint();return str1 + " : " + str2 + " : " + str3;}protected void paint(){getChildren().clear();double clockRadius = Math.min(w, h) * 0.8 * 0.5;double centerX = w / 2;double centerY = h / 2;double sLength = clockRadius * 0.8;double secondX = centerX + sLength * Math.sin(second * (2 * Math.PI) / 60);double secondY = centerY - sLength * Math.cos(second * (2 * Math.PI) / 60);Line sLine = new Line(centerX, centerY, secondX, secondY);sLine.setStroke(Color.RED);double mLength = clockRadius * 0.65;double minuteX = centerX + mLength * Math.sin(minute * (2 * Math.PI) / 60);double minuteY = centerY - mLength * Math.cos(minute * (2 * Math.PI) / 60);Line mLine = new Line(centerX, centerY, minuteX, minuteY);mLine.setStroke(Color.BLUE);double hLength = clockRadius * 0.5;double hourX = centerX + hLength * Math.sin(hour * (2 * Math.PI) / 12);double hourY = centerY - hLength * Math.cos(hour * (2 * Math.PI) / 12);Line hLine = new Line(centerX, centerY, hourX, hourY);mLine.setStroke(Color.GREEN);getChildren().addAll(sLine, mLine, hLine);}}3)CalendarPanel.java类这个类(Pane)⽤来显⽰⽇历(这⾥⽤到了⼀个字体Cooper Black⼀般系统应该都有,没有就得添加)package com.javaBasic.javaFX;import yout.Pane;import yout.ColumnConstraints;import bel;import javafx.scene.paint.Color;import javafx.geometry.HPos;import javafx.geometry.Insets;import javafx.geometry.Pos;import javafx.scene.text.Font;import javafx.scene.text.FontWeight;import javafx.scene.text.Text;import java.util.Calendar;/*** @version 1.00 2016-10-17* @author Administrator* 功能:显⽰⽇历*/public class CalendarPanel extends Pane{private int year;private int month;private int day;private int firstDayOfWeek;private int totalDayOfMonth;public CalendarPanel(){Calendar calendar = Calendar.getInstance();year = calendar.get(Calendar.YEAR);month = calendar.get(Calendar.MONTH) + 1;day = calendar.get(Calendar.DAY_OF_MONTH);totalDayOfMonth = calendar.getActualMaximum(Calendar.DATE);calendar.set(Calendar.DAY_OF_MONTH, 1);firstDayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;paint();}public void paint(){GridPane cp = new GridPane();String[] week = new String[]{"SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"}; cp.setPadding(new Insets(30, 30, 10, 10));Text text1 = new Text(year + "年" + month + "⽉");text1.setStroke(Color.GREEN);cp.setAlignment(Pos.CENTER);cp.add(text1, 0, 0);GridPane.setColumnSpan(text1, 7);GridPane.setHalignment(text1, HPos.CENTER);for(int i = 0; i < 7; i++){Label label = new Label(week[i]);if(i == 0 || i == 6) label.setTextFill(Color.RED);cp.add(label, i, 1);cp.getColumnConstraints().add(new ColumnConstraints(30));GridPane.setHalignment(label, HPos.CENTER);}for(int j = 0; j < totalDayOfMonth; j++){Label label = new Label(j + 1 +"");if (j + 1 == day) label.setFont(Font.font("Cooper Black", FontWeight.BOLD, 20)); int k = firstDayOfWeek + j;if((k % 7 == 0) || (k % 7 == 6)) label.setTextFill(Color.RED);cp.add(label, k % 7, 2 + k / 7);GridPane.setHalignment(label, HPos.RIGHT);}getChildren().add(cp);}}4)主⾯板ClockMainPanel.java这个类(Pane)是⽤于将上⾯三个⾯板合成主⾯板package com.javaBasic.javaFX;import javafx.animation.KeyFrame;import javafx.animation.Timeline;import javafx.application.Application;import javafx.event.ActionEvent;import javafx.event.EventHandler;import javafx.scene.Scene;import yout.BorderPane;import javafx.scene.text.Font;import javafx.scene.text.Text;import javafx.stage.Stage;import javafx.util.Duration;/*** @version 1.00 2016-10-17* @author Administrator* 功能:各个⾯板Pane合成⼀个时钟⾯板ClockMainPanel*/public class ClockMainPanel extends Application {String NowTime;public static void main(String[] args) {// TODO Auto-generated method stubunch(args);}public void start(Stage primaryStage){ClockEdge ce = new ClockEdge();ClockPointer cp = new ClockPointer();StackPane sp = new StackPane(ce, cp);StackPane nt = new StackPane();CalendarPanel caPa = new CalendarPanel();BorderPane bp = new BorderPane();bp.setLeft(sp);bp.setRight(caPa);bp.setBottom(nt);Scene scene = new Scene(bp, 420, 200);EventHandler<ActionEvent> eventHandler = e ->{nt.getChildren().clear();NowTime = (String) cp.setCurrentTime();Text tt= new Text(NowTime);tt.setFont(Font.font("Times New Roman", 20));nt.getChildren().add(tt);};Timeline animation = new Timeline(new KeyFrame(lis(1000), eventHandler));animation.setCycleCount(Timeline.INDEFINITE);animation.play();primaryStage.setTitle("Perpetual calendar");primaryStage.setScene(scene);primaryStage.show();}}以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
java课程设计简单日历(word文档良心出品)
j a v a课程设计报告题目:JA V A简易时间日历程序****:***学号:**********专业班级:信101****:***课程设计题目题目说明通过编写一个基于JAVA的应用系统综合实例,自定义一个日历组件显示日期和时间并进行适当的功能扩充,实践Java语言编程技术。
系统设计1 设计目标一个完整的程序应具有以下功能:1)显示当月日历、当前日期、当前时间;2)可查寻任意月以及任意年的日历;3)使用图形化界面能够弹出对话框;5)正常退出程序。
2 设计思想设计一个类用来构成日历系统的主窗口,然后编写一个框架类显示时间和提示信息。
在设计中应用了多种容器和控件。
系统模块划分图1:简易日历的程序结构图初始化:public void init()完成界面初始化,形成一个以挂历形式显示当前日期的窗口。
日历描述:(1)public void updateView()改变日期后完成更新界面;(2)抽象类java.util.Calendar获取系统日期并传递日期数据而且在人工改变日期后得出当天是周几;(3)public static void main(String[] args)主函数完成系统各算法的调用并对主窗口的一些属性进行设置;滚动时间:将时间以文本的形式在文本框中滚动播出,并能改变滚动的速度。
4. 使用类及接口仅仅简单说明类的功能,详细资料请参看《JavaTM 2 Platform Standard Ed. 6》的电子文档,常规的接口与包则省略不屑。
//以下是日历程序块中使用的类package fancy;import java.awt.*;import java.awt.event.*;import java.util.*; //主要用此包中的日期和时间类import javax.swing.*;import javax.swing.event.*;import javax.swing.table.*;//以下是对滚动时间程序块所使用的类和接口,用到定时器类Timerimport java.awt.Color;import java.awt.FlowLayout;import java.awt.event.ActionListener;import java.awt.event.ActionEvent;import java.awt.event.FocusListener;、//用于监听鼠标单击(焦点改变)事件import java.awt.event.FocusEvent;//用于响应鼠标单击(焦点改变)事件、import javax.swing.JFrame;import javax.swing.JTextField;import javax.swing.JSpinner;//让用户从一个有序序列中选择一个数字或者一个对象值的单行输入字段。
Java日历记事本
NIIT-2综合训练日历记事本专业计算机科学与技术学生姓名班级学号指导教师完成日期信息工程学院目录一、综合训练的目的 (1)二、综合训练的内容 (1)三、综合训练的具体实现 (1)四、综合训练的总结 (2)附录:源程序清单 (3)NIIT-2综合训练一、综合训练的目的(1) 进一步巩固所学的Java语言基础知识,达到熟练编写、运用的程度;(2) 锻炼自己的面向对象的程序设计思想,能够深刻认识面向过程与面向对象两种设计方法之间的区别;(3) 熟练掌握具体软件开发平台下(NetBeans)的动手能力,掌握Java应用程序设计的方法与技巧,实现从传统面向过程程序设计思维到面向对象程序设计思维的转型;(4) 初步了解MIS的概念与相关知识,具备独立设计、实现小型MIS系统的应用开发能力。
二、综合训练的内容题目:日历记事本三、综合训练的具体实现1.设计内容设计GUI界面的日历记事本。
系统将日历,记事本功能结合在一起,用户可以方便地在任何日期记录下有关内容或查看某个日期的记录内容。
2.设计要求1.系统界面的左侧是日历。
该日历可以按年份前后翻动,鼠标单击“上年”按钮时,当前日历的年份减一;当鼠标左键单击“下年”按钮,当前日历的年份加一。
2.该日历也可以在某年内按月前后翻动。
鼠标单击“上月”按钮时,当前日历的月份减一;当鼠标左键单击“下月”按钮,当前日历表的月份加一。
3.使用鼠标左键单击选定的日期,如已有记录内容,系统将弹出对话框提示该日历已有记录内容,并询问用户是否用记事本显示该内容。
4.用户选择具体日期后,可以将记事本的当前内容保存起来,形成日志。
3.总体设计本日历记事本程序共有4个java源文件。
CalendarPad.java该java文件生成的类负责创建本日历记事本程序主窗口。
该类含有main方法,程序从该类开始执行。
Year.java该文件负责创建管理年份的对象。
Momth.java该文件负责创建管理月份的类对象。
java课程设计 万年历
}
3.4代码实现
package ss2;
import java.applet.Applet;
import java.awt.*;
import java.util.*;
public class WanNianLi extends Applet{
static final int TOP = 70; //顶端距离
int searchMonth,searchYear; //查询的年份及月份
}
(4)绘制程序的界面
public void init(){
setBackground(Color.green); //设置背景颜色
searchMonth = calendar.get(Calendar.MONTH); //得到系统年份,当前的年份
add(monthChoice);
add(btUpdate);
int componentCount=this.getComponentCount(); //得到Applet中的组件数量
for (int i=0;i<componentCount;i++){
getComponent(i).setFont(smallFont); //设置所有组件的显示字体
monthChoice.addItem(months[i]); //增加下拉框选项
}
monthChoice.select(searchMonth); //设置下拉框当前选择项
add(monthChoice);
add(btUpdate);
int componentCount=this.getComponentCount(); //得到Applet中的组件数量
java日历
Java日历一、开发语言:java二、开发环境:MyEclipse8.6三、项目名称:java日历控件四、程序运行截图:1.通过单击更改年份:2.通过单击更改月份3.通过单击更改日期4.通过键盘方向键更改日期5.右击将快捷第显示当天的日历6.windows日历展示:7.通过双击可以关闭日历8.该日历的实质是一个去掉了修饰的JFrame9.通过右上角很小的关闭按钮也可以关闭日历10.该日历应用于其它应用程序进行日期输入,日期修改五、程序源文件文件一:package net.cqwu.control;/*_*=====使用已有类Calendar======*_*/import java.text.DateFormatSymbols;import java.util.*;/*** @version 1.4 2007-04-07* @author Cay Horstmann*/public class StandardCalendar{public static void main(String[] args) {GregorianCalendar d = new GregorianCalendar();StandardCalendar s= new StandardCalendar(d.get(Calendar.YEAR), d.get(Calendar.MONTH) - 1, d.get(Calendar.DAY_OF_MONTH));System.out.print(s.getCalendarString());String [][] b = s.getCalendarNumber2D(s.calendarString);int[][] a = s.getMinIndexOutOfMonth(b);for (int[] t: a){for (int p : t){System.out.print(p + " ");}}}public StandardCalendar(int ye, int mo, int da) {super();this.ye = ye;this.mo = mo;this.da = da;}public String getCalendarString(){calendarString = "";// construct d as current dateGregorianCalendar d = new GregorianCalendar(ye, mo, da);int today = d.get(Calendar.DAY_OF_MONTH);System.out.println("今天" + today + "号");int month = d.get(Calendar.MONTH);System.out.println("今天" + (month + 1) + "月");//set d to start date of the monthd.set(Calendar.DAY_OF_MONTH,1);// DAY_OF_WEEK表示一个周中的第几天int weekday = d.get(Calendar.DAY_OF_WEEK);System.out.println("日历当天是一周中的第"+weekday + "天");//get first day of week (Sunday in the U.S.)int firstDayOfWeek = d.getFirstDayOfWeek();// 如果一个月的第一天就是一个周的第一天,就输出上一个月的倒数七天String preMonthString = "";while (weekday == firstDayOfWeek){d.add(Calendar.DAY_OF_MONTH,-1);String temp = "" +d.get(Calendar.DAY_OF_MONTH);preMonthString = temp + " " + preMonthString;System.out.println(temp);weekday = d.get(Calendar.DAY_OF_WEEK);// GregorianCalendar temp1 = new GregorianCalendar(d.get(Calendar.YEAR), d.get(Calendar.MONTH)-1, 1);// do// {// preMonthDays++;// temp1.add(Calendar.DAY_OF_MONTH, 1);// }while(temp1.get(Calendar.MONTH)==month-1);// System.out.println("前一个月有:" + preMonthDays + "天");}//determine the required indentation for the first lineint indent = 0;while(weekday != firstDayOfWeek){indent ++;d.add(Calendar.DAY_OF_MONTH,-1);String temp = "" +d.get(Calendar.DAY_OF_MONTH);preMonthString = temp + " " + preMonthString;System.out.println(temp);weekday = d.get(Calendar.DAY_OF_WEEK);}System.out.println(preMonthString);//print weekday namesString[] weekdayNames = new DateFormatSymbols().getShortWeekdays();do{System.out.printf("%4s",weekdayNames[weekday]);d.add(Calendar.DAY_OF_MONTH,1);weekday = d.get(Calendar.DAY_OF_WEEK);}while(weekday != firstDayOfWeek);System.out.println();// for(int i = 1 ;i <= indent;i++)// {// System.out.print(" ");// }if (preMonthString.length()==21){System.out.print(preMonthString + "\n");calendarString += preMonthString + "\n";}else{System.out.print(preMonthString);calendarString += preMonthString;}d.set(Calendar.DAY_OF_MONTH,1);do{//print dayint day = d.get(Calendar.DAY_OF_MONTH);System.out.printf("%2d",day);if (day < 10){calendarString += " " + day;}else{calendarString += day;}// mark current day with *if(day == today){System.out.print("*");calendarString += "*";}else{System.out.print(" ");calendarString += " ";}//advance d to the next dayd.add(Calendar.DAY_OF_MONTH,1);weekday = d.get(Calendar.DAY_OF_WEEK);//start a new line at the start of the week if(weekday == firstDayOfWeek){System.out.println();calendarString += "\n";}}while(d.get(Calendar.MONTH) == month);//the loop exits when d is day 1 of the next month// 填充日历中的尾部do{//print dayint day = d.get(Calendar.DAY_OF_MONTH);System.out.printf("%2d",day);if (day < 10){calendarString += " " + day;}else{calendarString += day;}// mark current day with *if(day == today){System.out.print("*");calendarString += "*";}else{System.out.print(" ");calendarString += " ";}//advance d to the next dayd.add(Calendar.DAY_OF_MONTH,1);weekday = d.get(Calendar.DAY_OF_WEEK);//start a new line at the start of the weekif(weekday == firstDayOfWeek){System.out.println();calendarString += "\n";}}while(calendarString.length()<=131);// System.out.println("月份" + d.get(Calendar.MONTH));//print final end of line if necessary// if(weekday != firstDayOfWeek)// System.out.println();// System.out.println(calendarString);return calendarString;}// 获得一维日历字符串数组public String[] getCalendarNumber(String calendarString){String[] tempArray = calendarString.split("\n");String standardString = "";String[] standardStringArray = new String[42];for (int i = 0; i < tempArray.length; i ++){standardString += tempArray[i];}// System.out.println(standardString);int standardStringLength = standardString.length();for (int i = 0, j = 1, k =0 ; i < standardStringLength - 2 && j < standardStringLength - 1 && k < 49; i += 3, j += 3, k ++) {standardStringArray[k] = (standardString.charAt(i)==' '?"":standardString.charAt(i)) +""+ standardString.charAt(j);}// for (String temp : standardStringArray)// {// System.out.print(temp + " ");// }return standardStringArray;}// 获得二维日历字符串数组public String[][] getCalendarNumber2D(String calendarString){String[][] standardStringArray2D = new String[6][7];String[] temp = this.getCalendarNumber(this.calendarString);for (int i = 0; i < temp.length; i++) {standardStringArray2D[i/7][i%7] = temp[i];}System.out.println("输出二维数组");for (String [] temp1 : standardStringArray2D){for (String temp2 : temp1){System.out.print(temp2 + " ");}System.out.println();}return standardStringArray2D;}// 该方法用于获得本日历的两个1的索引public int[][] getMinIndexOutOfMonth(String[][] temp){int[][] index = {{0,0}, {0, 0}};for (int i = 0; i < 6; i++) {for (int j = 0; j < 7; j++) {if (Integer.parseInt(temp[i][j]) == 1 && i < 2){index[0][0] = i;index[0][1] = j;}if (Integer.parseInt(temp[i][j]) == 1 && i > 2){index[1][0] = i;index[1][1] = j;}}}return index;}public int getYe() {return ye;}public void setYe(int ye) {this.ye = ye;}public int getMo() {return mo;}public void setMo(int mo) {this.mo = mo;}public int getDa() {return da;}public void setDa(int da) {this.da = da;}private String calendarString = null;private int ye ;private int mo;private int da;};文件二:package net.cqwu.control;import java.awt.Toolkit;/*** 定义一个接口,获得显示器的大小* @version 2011-04-26* @author yelin*/public interface ScreenSize{public static final int DEFAULT_WIDTH = Toolkit.getDefaultToolkit().getScreenSize().width;public static final int DEFAULT_HEIGHT = Toolkit.getDefaultToolkit().getScreenSize().height;};文件三:package net.cqwu.model;import java.awt.Color;import java.awt.Cursor;import java.awt.EventQueue;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;import java.awt.event.MouseMotionListener;import java.awt.event.MouseWheelEvent;import java.awt.event.MouseWheelListener;import java.awt.event.WindowEvent;import java.awt.event.WindowListener;import java.awt.font.FontRenderContext;import java.awt.font.LineMetrics;import java.awt.geom.Rectangle2D;import java.util.Calendar;import java.util.GregorianCalendar;import javax.swing.JFrame;import javax.swing.JMenuItem;import javax.swing.JPanel;import javax.swing.JPopupMenu;import javax.swing.event.MouseInputListener;import net.cqwu.control.ScreenSize;import net.cqwu.control.StandardCalendar;/*** 设计一个日历控件,可以在任何地方使用.* 使用说明:若作为控件使用请转至691行作用,在MainCalendar构造时注册* 你自己的类,进行对象之间的通讯,可以在691行处获取日历。
基于Java的日历记事本..
摘要Java是Sun公司推出的一种基于面向对象技术的编程语言,同时也是一种跨平台的程序设计语言,是软件开发的一种革命性技术,已被列为当今世界信息技术的主流之一,Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首选语言。
Java 有许多值得称道的优点,如简单、面向对象、分布式、解释性、可靠、安全、结构中立性、可移植性、高性能、多线程、动态性等。
用JAVA 语言进行程序开发,目前十分流行。
本设计通过 JAVA 来实现具有图形界面的日历记事本,体现了 JAVA 的高效性等特点。
随着社会的发展,越来越多的人依靠电子产品生活,而他们的日常工作也是离不开这些电子产品的,所以开发出一款日历备忘录就显得必不可少了。
利用面向对象的程序设计语言Java来实现具有图形界面的日历记事本。
日历具有基本的浏览和日期修改的功能。
记事本具有输入、保存、删除、查看等基本功能。
关键词:面向对象Java 日历记事本I目录摘要 (I)目录 ................................................................................................................................ I I 第1章绪论 .. (3)1.1概述 (3)1.2 课程设计题目 (3)1.3 课程设计目的 (3)1.4 课程设计内容 (3)1.5 项目背景和目标 (3)第2章系统需求分析 (5)2.1 系统目标 (5)2.2 主体功能 (5)2.3 开发环境 (5)第3章系统概要设计 (6)3.1 系统的功能模块划分 (6)3.2 系统流程 (6)第4章系统详细设计 (8)4.1 程序变量和方法 (8)第5章算法描述和编码实现 (12)5.1 类的算法 (12)5.2 编码实现 (13)第6章测试 (16)6.1 测试方案 (16)6.2 测试结果 (16)总结 (20)参考文献 (21)附录 (22)II第1章绪论1.1概述日历记事本的包括日历和日志记事本两部分:日历部分采用公历历法,界面设计:日期部分每行7天,每列5天,可完全记录一个月中的所有天数。
用java做一个简单的日历
用java做一个简单的日历简单日历1:第一步先求每个月的第一天是星期几-----1900年1月1日--2014年9月1日是星期几呢?就是把这之间的天数加起来在对7求余,结果是多少就是星期几2:求当月有多少天3:在对日历进行排位一:效果图如下所示:二:具体实现代码如下:import java.util.Scanner;public class Calendar {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubScanner input=new Scanner(System.in);System.out.println("----万年历-----");System.out.println("请输入年份:");int year=input.nextInt();System.out.println("请输入月份:");int month=input.nextInt();int sumDay=0;int monthDay=0;//输入的月份天数;for(int oldYear=1900;oldYear<year;oldyear++)< bdsfid="90" p=""></year;oldyear++)<>{if(oldYear%4==0&&oldYear%100!=0||oldYear%400= =0) {sumDay+=366;if(month==2){monthDay=29;}else{if(month==4||month==6||month==9||month==11) {monthDay=30;}else{monthDay=31;}}}else{sumDay+=365;if(month==2){monthDay=28;}else{if(month==4||month==6||month==9||month==11) { monthDay=30;else{monthDay=31;}}}}for(int i=1;i<month;i++)< bdsfid="131" p=""></month;i++)<>{if(i==2){if(year%4==0&&year%100!=0||year%400==0) {sumDay+=29;}else{sumDay+=28;}}else{if(i==4||i==6||i==9||i==11){sumDay+=30;}else{sumDay+=31;}}sumDay+=1;int ofWeek=0;//星期几ofWeek=sumDay%7;//System.out.println("一共多少天:"+sumDay);//System.out.println("今天是星期几:"+ofWeek);//System.out.println("这个月一共多少天:"+monthDay); System.out.println("一\二\三\四\五\六\日");for(int i=1;i<=7;i++){if(ofWeek==0){ofWeek=7;}if(ofWeek==i){for(int j=1;j<=monthDay;j++){System.out.print(j+"\");if((ofWeek+j-1)%7==0){System.out.print("\");}}}else{System.out.print("\");}} }。
日历控件示例Java代码
日历控件示例Java代码日历空间示例使用方法:将其代码复制粘贴进Eclipse或者Myeclipse中,再导入datepicker.jar 包即可,具体使用步骤请参考本人上传的JavaSwing日历控件.doc文件。
package com.shyhao.software;import java.awt.Color;import java.awt.Dimension; import java.awt.Font;import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.util.Date; import java.util.Locale; import javax.swing.JButton;import javax.swing.JFrame; import javax.swing.JLabel; importjavax.swing.JTextField; import javax.swing.UIManager;import ponents.ui.DatePicker;public class DatePickerWin extends JFrame implementsActionListener{ //************************************ private DatePicker datepick; private static final String DefaultFormat = \ private Date date=new Date(); private Font font=new Font(\ private Dimension dimension=new Dimension(177,24); private int[] hilightDays={1,3,5,7}; private int[] disabledDays={4,6,5,9}; //************************************ private JTextField txtField; private JTextField valueField; private JButton getButton; /** * Create the frame */ public DatePickerWin() { super();setTitle(\ getContentPane().setBackground(Color.WHITE);getContentPane().setLayout(null); setLocationRelativeTo(null);//此句可保证Component位居屏幕中间 setSize(487, 315);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//*********************************************************************//datepick = new DatePicker(); 全部设为默认值 //datepick = newDatePicker(date,null,null,null);//自定义参数值 //datepick = newDatePicker(date,DefaultFormat,null,dimension);//自定义参数值 //datepick = new DatePicker(null,DefaultFormat,null,dimension);//自定义参数值 //各参数含义如下 //参数1 设置该控件的初始值(可选) //参数2 设置日期的格式(可选) //参数3 设置该控件的字体(可选) //参数3 设置该控件的大小(可选) //该控件继承自JComponent ,它继承了Jcomponent的属性 datepick = new DatePicker(date,DefaultFormat,font,dimension);//自定义参数值//datepick.setLocation(137, 83); datepick.setBounds(137, 83, 177, 24); datepick.setHightlightdays(hilightDays, Color.red);//设置一个月份中需要高亮显示的日子 datepick.setDisableddays(disabledDays);//设置一个月份中不需要的日子,呈灰色显示 datepick.setLocale(Locale.CHINA);//设置国家datepick.setTimePanleVisible(true);//设置时钟面板可见getContentPane().add(datepick);//********************************************************************************* valueField = new JTextField(); valueField.setBounds(137, 138, 177, 21); getContentPane().add(valueField); txtField = new JTextField(); txtField.setBounds(137, 187, 177, 21); getContentPane().add(txtField); getButton = new JButton(); getButton.addActionListener(this);getButton.setText(\ getButton.setBounds(10, 163, 64, 23); getContentPane().add(getButton); final JLabel valueLabel = new JLabel(); valueLabel.setText(\ valueLabel.setBounds(88, 141, 43, 15);getContentPane().add(valueLabel); final JLabel txtLabel = new JLabel(); txtLabel.setText(\ txtLabel.setBounds(96, 190, 35, 15);getContentPane().add(txtLabel); // } public voidactionPerformed(ActionEvent e) { //*************************************** Date date=(Date)datepick.getValue(); String txt=datepick.getText(); valueField.setText(date.toString()); txtField.setText(txt);//************************************** } /** * Launch the application * * @param args */ public static void main(String args[]) { try { UIManager.setLookAndFeel(\Windows外观 } catch (Exception e) {}}}DatePickerWin frame = new DatePickerWin(); frame.setVisible(true);感谢您的阅读,祝您生活愉快。
JAVA常用日历日期时间星期工具类(封装方法非常多)
JAVA常用日历|日期|时间|星期工具类(封装方法非常多)相信大部分程序语言都需要处理日期、日历和时间相关的数据。
本工具类是基于JAVA语言,封装了常用的方法,这些方法来源于各种实际项目,大部分都是会直接用到的。
此工具类不依赖第三方JAR包,可以直接放入您的项目中使用。
方法全是自己手写的,若有不正确之处还请指出。
此工具类会不断更新完善,有需要的就收藏一下吧。
import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Arrays;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;/*** 日历日期工具类* @decription提供常用的获取日期、星期、周数以及转换操作* @author Zebe* @date 2014/11/27* @version 1.0.2*/public class CalendarUtil {private static int WEEKS = 0;private static SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd");private static SimpleDateFormat SDFT = new SimpleDateFormat("yyyy-MM-dd HH:m m:ss");/*** 获取当前年份* @return String 例如:2014*/public static String getYear() {Calendar cd = Calendar.getInstance();return String.valueOf(cd.get(Calendar.YEAR));}/*** 获取某个日期中的年份* @return String 例如:2014-05-16 返回 2014*/public static String getYearOfDate(String date) {Calendar cd = Calendar.getInstance();try {cd.setTime(SDF.parse(date));} catch (Exception e) {e.printStackTrace();}return String.valueOf(cd.get(Calendar.YEAR));}/*** 获取当前月份* @return String 例如:4*/public static String getMonth() {Calendar cd = Calendar.getInstance();return String.valueOf(cd.get(Calendar.MONTH) + 1);}/*** 获取某个日期中的月份* @return String 例如:2014-05-16 返回 5*/public static String getMonthOfDate(String date) {Calendar cd = Calendar.getInstance();try {cd.setTime(SDF.parse(date));} catch (Exception e) {e.printStackTrace();}return String.valueOf(cd.get(Calendar.MONTH) + 1); }/*** 获取日期中的英文月份缩写* @return String*/public static String getMonthShortEnNameOfDate(String date) { Calendar cd = Calendar.getInstance();String result = "";try {cd.setTime(SDF.parse(date));int month = cd.get(Calendar.MONTH) + 1;switch (month) {case1:result = "JAN";break;result = "FEB";break;case3:result = "MAR";break;case4:result = "APR";break;case5:result = "MAY";break;case6:result = "JUN";break;case7:result = "JUL";break;case8:result = "AUG";break;case9:result = "SEP";break;case10:result = "OCT";break;case11:result = "NOV";break;result = "DEC";break;}} catch (Exception e) {e.printStackTrace();}return result;}/*** 获取当前日期* @return String 例如:23*/public static String getDay() {Calendar cd = Calendar.getInstance();return String.valueOf(cd.get(Calendar.DAY_OF_MONTH)); }/*** 获取某个日期中的日期* @return String 例如:2014-05-16 返回 16*/public static String getDayOfDate(String date) {Calendar cd = Calendar.getInstance();try {cd.setTime(SDF.parse(date));} catch (Exception e) {e.printStackTrace();}return String.valueOf(cd.get(Calendar.DAY_OF_MONTH)); }/*** 获取昨天日期* @return yyyy-MM-dd*/public static String getYesterday() {Calendar cal = Calendar.getInstance();try {cal.setTime(SDF.parse(getToday()));cal.add(Calendar.DAY_OF_YEAR, -1);} catch (Exception e) {e.printStackTrace();}return SDF.format(cal.getTime());}/*** 获取今天日期* @return yyyy-MM-dd*/public static String getToday() {return SDF.format(new Date());}/*** 获取明天日期* @return yyyy-MM-dd*/public static String getTommorow() {Calendar cal = Calendar.getInstance();try {cal.setTime(SDF.parse(getToday()));cal.add(Calendar.DAY_OF_YEAR, +1);} catch (Exception e) {e.printStackTrace();}return SDF.format(cal.getTime());}/*** 获取当前日期和时间* @return yyyy-MM-dd HH:mm:ss*/public static String getDateTime() {return SDFT.format(new Date());}/*** 获得当前日期与本周一相差的天数* @return int*/private static int getMondayPlus() {Calendar cd = Calendar.getInstance();// 获得今天是一周的第几天,星期日是第一天,星期二是第二天......int dayOfWeek = cd.get(Calendar.DAY_OF_WEEK);if (dayOfWeek == 1) {return -6;} else {return2 - dayOfWeek;}}/*** 获得上周星期一的日期* @return yyyy-MM-dd*/public static String getPreMonday() {WEEKS--;int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * WEEKS);Date monday = currentDate.getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(monday);}/*** 获得本周星期一的日期* @return yyyy-MM-dd*/public static String getMonday() {WEEKS = 0;int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus);Date monday = currentDate.getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(monday);}/*** 获得下周星期一的日期* @return yyyy-MM-dd*/public static String getNextMonday() {WEEKS++;int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * WEEKS);Date monday = currentDate.getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(monday);}/*** 获取某一年第几周的星期一* @return yyyy-MM-dd*/public static String getMondayOfWeek(int year, int week) {Calendar cal = Calendar.getInstance();cal.setFirstDayOfWeek(Calendar.MONDAY);cal.clear();cal.set(Calendar.YEAR, year);cal.set(Calendar.WEEK_OF_YEAR,week);cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);return SDF.format(cal.getTime());}/*** 获取某一年第几周的星期日* @return yyyy-MM-dd*/public static String getSundayOfWeek(int year, int week) {Calendar cal = Calendar.getInstance();cal.setFirstDayOfWeek(Calendar.MONDAY);cal.clear();cal.set(Calendar.YEAR, year);cal.set(Calendar.WEEK_OF_YEAR,week);cal.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);return SDF.format(cal.getTime());}/*** 获取指定周星期日的日期* @return yyyy-MM-dd*/public static String getSunday() {int mondayPlus = getMondayPlus();GregorianCalendar currentDate = new GregorianCalendar();currentDate.add(GregorianCalendar.DATE, mondayPlus + 7 * WEEKS + 6);Date monday = currentDate.getTime();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");return sdf.format(monday);}/*** 获取当前周是本月的第几周* @return String*/public static int getWeekOfMonth() {Calendar cd = Calendar.getInstance();cd.setFirstDayOfWeek(Calendar.MONDAY);return cd.get(Calendar.WEEK_OF_MONTH);}/*** 获取当前周是本年的第几周* @return String*/public static int getWeekOfYear() {Calendar cd = Calendar.getInstance();cd.setFirstDayOfWeek(Calendar.MONDAY);return cd.get(Calendar.WEEK_OF_YEAR);}/*** 获取本月第一天* @param date* @return yyyy-MM-dd*/public static String getFirstDayOfThisMonth() {String year = getYear();String month = getMonth();if (month.length() == 1) {return year + "-0" + month + "-01";}return year + "-" + month + "-01";}/*** 获取本月最后一天* @param date* @return yyyy-MM-dd*/public static String getLastDayOfThisMonth() {Calendar calendar = Calendar.getInstance();try {calendar.set(calendar.get(Calendar.YEAR), calendar.get(Cal endar.MONTH) + 1, 1);calendar.add(Calendar.DATE, -1);} catch (Exception e) {e.printStackTrace();}return SDF.format(calendar.getTime());}/*** 获取指定年份月份的最后一天(整形参数)* @param month* @return yyyy-MM-dd*/public static String getLastDayOfMonth(int year, int month) {Calendar calendar = Calendar.getInstance();try {calendar.set(year, month, 1);calendar.add(Calendar.DATE, -1);} catch (Exception e) {}return SDF.format(calendar.getTime());}/*** 获取指定年份月份的最后一天(字符串参数)* @param month* @return yyyy-MM-dd*/public static String getLastDayOfMonth(String year, String month) { int y = Integer.parseInt(year);int m = Integer.parseInt(month);return getLastDayOfMonth(y, m);}/*** 获取两个日期之间相差天数* @param fromDay* @param toDay* @return long*/public static long getDaysBetween(String fromDay, String toDay) { long days = 0;try {Date d1 = SDF.parse(fromDay);Date d2 = SDF.parse(toDay);long diff = d2.getTime() - d1.getTime();days = diff / (1000 * 60 * 60 * 24);} catch (Exception e) {}return days;}/*** 按指定格式转换日期对象为字符串* @param date 日期对象* @param format 日期格式,如:yyyy-MM-dd HH:mm:ss* @return String*/public static String convertDateToString(Date date, String format) { SimpleDateFormat mySDF = new SimpleDateFormat(format);String dateStr = mySDF.format(date);return dateStr;}/*** 按指定格式转换字符串为日期对象* @param date 字符串日期* @param format 日期格式,如:yyyy-MM-dd HH:mm:ss* @return String*/public static Date convertStringToDate(String date, String format) { try {SimpleDateFormat mySDF = new SimpleDateFormat(format);Date dateTemp = mySDF.parse(date);return dateTemp;} catch (Exception e) {e.printStackTrace();return null;}}/*** 获取指定分钟前的时间字符串* @param minute 分钟* @return String yyyy-MM-dd HH:mm:ss*/public static String getPastTimeByMinute(int minute) {Date date = new Date(new Date().getTime() - (minute * 60 * 1000));return convertDateToString(date, "yyyy-MM-dd HH:mm:ss");}/*** 获取指定分钟前的时间字符串(自定义格式)* @param minute 分钟* @param format 日期格式,如:yyyy-MM-dd HH:mm:ss* @return String*/public static String getPastTimeByMinute(int minute, String format) { Date date = new Date(new Date().getTime() - (minute * 60 * 1000));return convertDateToString(date, format);}/*** 获取指定天数前的时间字符串* @param day 天数* @return String yyyy-MM-dd HH:mm:ss*/public static String getPastTimeByDay(int day) {Date date = new Date(new Date().getTime() - (day * 24 * 60 * 60 * 10 00));return convertDateToString(date, "yyyy-MM-dd HH:mm:ss");}/*** 获取指定天数前的时间字符串(自定义格式)* @param day 天数* @param format 日期格式,如:yyyy-MM-dd HH:mm:ss* @return String yyyy-MM-dd HH:mm:ss*/public static String getPastTimeByDay(int day, String format) {Date date = new Date(new Date().getTime() - (day * 24 * 60 * 60 * 10 00));return convertDateToString(date, format);}/*** 获取基于某个时间点后多少天后的时间点* @description如:2015-08-01 16:00:05,15天之后的时间点是* @param beginTime 开始时间点 yyyy-MM-dd HH:mm:ss* @param day 天数* @return String yyyy-MM-dd HH:mm:ss*/public static String getFutureTimeByDay(String beginTime, int day) {Date futureDate = new Date();try {Date debinDate = SDFT.parse(beginTime);futureDate = new Date(debinDate.getTime() + (day * 24 * 60 * 60 * 1000));} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}return convertDateToString(futureDate, "yyyy-MM-dd HH:mm:ss");}/*** 判断一组日期是否连续* @param dates Date数组* @return boolean*/public static boolean isContinuousDate(Date[] dates) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");long[] datesNew;boolean continuous = false;try {if (dates != null && dates.length >= 2) {// 通过 yyyy-MM-dd 进行格式化并得到一个long类型的日期数组datesNew = new long[dates.length];for (int i=0; i<dates.length; i++) {datesNew[i] = sdf.parse(sdf.format(date s[i])).getTime();}// 对这个数组进行排序Arrays.sort(datesNew);// 遍历新的日期数组,计算两个日期间的时间差(8640 0000为一整天的差距)for (int i=0; i<datesNew.length; i++) {Long tempDate = datesNew[i];if ((i + 1) < datesNew.length) {Long nextDate = datesNew[i + 1];if (Math.abs(tempDate - nextD ate) != 86400000) {return false;}}}return true;}} catch (Exception e) {e.printStackTrace();}return continuous;}/*** 方法测试* @param args* @throws ParseException*/public static void main(String[] args)throws ParseException {System.out.println("获取当前年:" + getYear());System.out.println("获取日期中的年份:" + getYearOfDate("2012-12-08 "));System.out.println("获取当前月:" + getMonth());System.out.println("获取日期中的月份:" + getMonthOfDate("2012-12-08 "));System.out.println("获取当前日:" + getDay());System.out.println("获取日期中的日:" + getDayOfDate("2012-12-08"));System.out.println("获取昨天日期:" + getYesterday());System.out.println("获取今天日期:" + getToday());System.out.println("获取明天日期:" + getTommorow());System.out.println("获取当前日期和时间:" + getDateTime());System.out.println("获得当前日期与本周一相差的天数:" + getMondayPlu s());System.out.println("获得上周星期一的日期:" + getPreMonday());System.out.println("获得上周星期日的日期:" + getSunday());System.out.println("获得本周星期一的日期:" + getMonday());System.out.println("获得本周星期日的日期:" + getSunday());System.out.println("获得下周星期一的日期:" + getNextMonday());System.out.println("获得下周星期日的日期:" + getSunday());System.out.println("获取当前周是本月的第几周:" + getWeekOfMonth());System.out.println("获取当前周是本年的第几周:" + getWeekOfYear());System.out.println("获取本月第一天:" + getFirstDayOfThisMonth());System.out.println("获取本月最后一天:" + getLastDayOfThisMonth());System.out.println("获取指定年份月份最后一天:" + getLastDayOfMonth(2 044, 2) + " <2044年2月>");System.out.println("获取两个日期之间相差天数:" + getDaysBetween("20 14-09-30", "2014-10-02") + " <2014-09-30~2014-12-02>");System.out.println("按指定格式转换日期对象为字符串:" + convertDateT oString(new Date(), "yyyy-MM-dd HH:mm:ss"));System.out.println("按指定格式转换字符串为日期对象:" + convertStrin gToDate("2015-12-12", "yyyy-MM-dd"));System.out.println("获取某一年第几周的星期一:" + getMondayOfWeek(20 14, 51));System.out.println("获取某一年第几周的星期日:" + getSundayOfWeek(20 14, 51));System.out.println("按照 yyy-M-d HH:mm 格式得到当前日期时间:" + con vertDateToString(new Date(), "yyyy-M-d HH:mm"));System.out.println("5分钟前的时间:" + getPastTimeByMinute(5));System.out.println("2天前的此时此刻:" + getPastTimeByDay(2));System.out.println("时间点 2015-08-21 16:00:05,12天之后的时间点是" + getFutureTimeByDay("2015-08-21 16:00:05", 12));// 判断连续日期Date d1 = new SimpleDateFormat("yyyy-MM-dd").parse("2015-11-18 15:5 6:20");Date d2 = new SimpleDateFormat("yyyy-MM-dd").parse("2015-11-19 14:5 3:23");Date d3 = new SimpleDateFormat("yyyy-MM-dd").parse("2015-11-20 14:2 2:20");Date d4 = new SimpleDateFormat("yyyy-MM-dd").parse("2015-11-21 19:5 6:32");Date[] dates = {d1, d2, d3, d4};System.out.println(SDF.format(d1) + "," + SDF.format(d2) + "," + SD F.format(d3) + "," + SDF.format(d4) + " 是连续日期吗?" + isContinuousDate(dates));}}调用更多,写更少!此工具类来源于【最全面的编程语言工具类平台】:。
JAVA显示日历课程设计csdn
JAVA显示日历课程设计csdn一、教学目标本课程旨在通过Java编程语言实现一个简单的日历显示功能,帮助学生掌握以下知识目标:1.理解并掌握Java编程语言的基本语法和结构。
2.学习并应用Java中的日期和时间处理类库。
3.学习并实践面向对象编程的基本概念和方法。
在技能目标方面,学生将能够:1.运用Java编程语言独立开发一个简单的日历应用程序。
2.运用面向对象编程的思想,设计和实现具有良好结构的应用程序。
在情感态度价值观目标方面,学生将:1.培养解决问题的能力和创新精神。
2.培养团队合作和分享的意识。
二、教学内容本课程的教学内容将按照以下大纲进行:1.Java编程语言基础:介绍Java的基本语法、数据类型、控制结构等。
2.面向对象编程:介绍类、对象、继承、多态等概念和方法。
3.日历显示功能的实现:学习并应用Java中的日期和时间处理类库,实现一个简单的日历显示功能。
具体的教学内容安排如下:第1周:Java编程语言基础。
第2周:面向对象编程。
第3周:日历显示功能的实现。
三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法:1.讲授法:讲解Java编程语言的基础知识和面向对象编程的概念。
2.案例分析法:分析并讨论实际的日历应用程序案例,帮助学生理解和应用知识。
3.实验法:学生通过动手实践,独立开发一个简单的日历应用程序。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,将准备以下教学资源:1.教材:Java编程语言基础和面向对象编程的教材。
2.多媒体资料:相关的教学视频、演示文稿和案例分析资料。
3.实验设备:计算机和网络设备,以供学生实践和开发应用程序。
五、教学评估本课程的评估方式将包括以下几个方面,以保证评估的客观性和公正性:1.平时表现:包括课堂参与度、小组讨论、提问等,占总评的20%。
2.作业:包括课后编程练习和相关的写作任务,占总评的30%。
3.考试:包括期中和期末考试,占总评的50%。
java日历记事本(无敌版带提醒功能调整时区更换图片铃声功能)
装订线北京师范大学2015~2016学年春季学期期末Java程序设计作业试卷课程名称: Java程序设计任课教师姓名:孙一林卷面总分: 100 分考试时长:分钟考试类别:闭卷□开卷其他□院(系):信息科学与技术学院专业:计算机科学与技术年级: 2014 姓名:刁诗哲学号:阅卷教师(签字):评价准则:(1)应用程序设计思想………………………………………………… ≤ 20% (2)程序结构表述……………………………………………………… ≤ 20% (3)调试、运行、结果………………………………………………… ≤ 20% (4)报告+程序文档………………………………………………………≤ 20% (5)应用程序展示(5分钟讲解与演示)……………………………≤ 10% (6)应用程序难易度……………………………………………………≤ 10%设计要求:选择一题,按自己理解设计程序,在报告(该试卷首页为报告第1页,文件名及格式为:*.doc或*.docx,* = 学号 + 姓名,报告为必要项)中给出设计思路、程序结构、调试、模拟运行、结果等说明内容,提交作业(设计、调试、运行、结果):报告+程序所有(源程序、类、打包等)文件的压缩文档(学号 + 姓名)。
设计题目难易度依照题号顺序由小到大。
多功能日历记事本一、整体介绍1.外观显示日历外观如下图所示,全局大体分为四个部分:左上,左下,右上,右下。
最上面是标题栏,显示该程序的名称,如我的程序显示的为“刁诗哲的日历”。
标题栏下方为菜单栏,菜单栏目前有两个菜单,分别是“功能设置”和“关于”。
左上部分为日历界面,显示一个万年历,用户可以在输入框中输入所查年份和月份,按下回车后自动跳转到该月。
左下部分是显示图片部分,用户可以自主设置自己喜欢的图片,设置这一功能主要是给用户提供个性化的用户体验,可以根据自己的喜好设置喜爱的图片,比如放置一个名人座右铭可以勉励自己在学业上不断进步。
java日历 可以改变系统外观
label = new JLabel(columnNames[i],JLabel.CENTER);
if(i == 0 || i == 6)
label.setForeground(Color.RED);
month_box = new JComboBox();
cross=new JRadioButton("c",false);cross.addActionListener(new LookAndFeel_Listener());
system=new JRadioButton("s",false);system.addActionListener(new LookAndFeel_Listener());
month_box.addActionListener(this);
return panel;
}
private JPanel initializtion_Week(){//显示星期的panel
JPanel panel = new JPanel();
label=new JLabel("",JLabel.CENTER);
datas[i][j] = label;
label.setBorder(new LineBorder(Color.BLUE));
if(j==0 || j==6)
add(panel_Header);panel_Calendar.setBounds(0 ,0 ,525 , 45);
add(panel_Week); panel_Week.setBounds(0 ,45 ,525 , 35);
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
风景日历制作系统设计要求:系统界面的左侧是日历,该日历可以按年份前后翻动,在某年内按月可以前后翻动;使用鼠标左键单击选定的日期,系统界面的右侧显示风景图片。
在系统界面的右侧设计功能按钮使得用户可以自选其他风景图片。
import java.awt.*;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.util.*;import java.util.Timer;import javax.swing.*;import javax.swing.event.*;import javax.swing.table.*;//这是一个用JList和JTable完成的简单日历public class calender{public static void main(String[] args){EventQueue.invokeLater(new Runnable(){public void run(){JFrame frame = new CalendarFrame();frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);frame.setVisible(true);}});}}class CalendarFrame extends JFrame{private static final long serialVersionUID = 8067844586793608064L;JPanel listPanel; // 显示月份的列表面板JPanel tablePanel; // 显示日期的表格面板JPanel textPanel; // 文本面板JMenuBar menuBar; // JMenuBar,JMenu定义的变量都没有实现功能JMenu fileMenu;JMenu editMenu;JMenu formatMenu;JMenu lookMenu;JMenu helpMenu;JEditorPane text; // 自带复制,剪切和删除快捷键功能的面板JScrollPane textscrollpane;JScrollPane tablescrollpane;JList list; // 显示月份的列表JTable table; // 显示日期的表格JPanel yearPanel; // 显示年份的面板JSpinner spinner; // JSpinner空间JLabel label = new JLabel();public static boolean flag = true;public CalendarFrame(){table = new JTable(new MyTableModel());tablescrollpane = new JScrollPane(table);for (int i = 0; i < 7; i++){TableColumn column = table.getColumnModel().getColumn(i);// 获取表格每一列column.setResizable(false);// 不允许改变列的大小}table.setBackground(Color.GREEN);table.setRowHeight(72); // 设定每列的大小table.setRowSelectionAllowed(false);// 设定行的选择模式table.setDefaultRenderer(String.class, new MyTableRenderer());list = new JList(new AbstractListModel() // 匿名的list模型类,提供list显示的月份数据{private static final long serialVersionUID = -3703164069291737586L;public Object getElementAt(int index){String obj = null;switch (index){case 0:obj = "Jan";break;case 1:obj = "Feb";break;case 2:obj = "Mar";break;case 3:obj = "Apr";break;case 4:obj = "May";break;case 5:obj = "Jun";break;case 6:obj = "Jul";break;case 7:obj = "Aug";break;case 8:obj = "Sep";break;case 9:obj = "Oct";break;case 10:obj = "Nov";break;case 11:obj = "Dec";break;}return obj;}@Overridepublic int getSize(){return 12;}});list.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // 设定列表的选择模式list.setCellRenderer(new MyListCellRenderer()); // 列表元素的绘制类MyListCellRenderer list.setSelectedIndex(Calendar.getInstance().get(Calendar.MONTH));// JList默认的月份为现实的月份list.addListSelectionListener(new ListSelectionListener()// 当某个列表被选中时,更新日期table控件{@Overridepublic void valueChanged(ListSelectionEvent e){flag = true;table.updateUI();}});list.addMouseListener(new MouseAdapter(){public void mouseClicked(MouseEvent evt){if (evt.getClickCount() == 2){String s = (String) list.getSelectedValue();JOptionPane.showMessageDialog(list, s);}}});listPanel = new JPanel();listPanel.setLayout(new BorderLayout());listPanel.add(list);tablePanel = new JPanel();tablePanel.setBackground(Color.white);tablePanel.setLayout(new BorderLayout());tablePanel.add(tablescrollpane);// table.setBackground(Color.green);yearPanel = new JPanel();// 将label控件和JSpinner控件加入年份面板上yearPanel.setLayout(new GridLayout(0, 4));JLabel gongyuan = new JLabel("公元", JLabel.RIGHT);JLabel year = new JLabel("年");spinner = new JSpinner(new SpinnerNumberModel(Calendar.getInstance().get(Calendar.YEAR), null, null, 1));spinner.addChangeListener(new ChangeListener() // 为JSpinner空间添加事件监听器{@Overridepublic void stateChanged(ChangeEvent e){flag = true;table.updateUI();}});yearPanel.add(gongyuan);yearPanel.add(spinner);yearPanel.add(year);yearPanel.add(label);showTime();new Timer().schedule(new TimerTask(){@Overridepublic void run(){while (true){showTime();}}}, 1000);tablePanel.add(yearPanel, BorderLayout.NORTH);// 将年份面板加入到表格面板的北部textPanel = new JPanel();textPanel.setLayout(new BorderLayout());text = new JEditorPane();textscrollpane = new JScrollPane(text);textPanel.add(textscrollpane);text.setFont(new Font("SansSerif", Font.PLAIN, 40));tablePanel.add(textPanel, BorderLayout.SOUTH);menuBar = new JMenuBar();// JMenu定义的空间都没实现功能fileMenu = new JMenu("文件");editMenu = new JMenu("编辑");formatMenu = new JMenu("格式");lookMenu = new JMenu("查看");helpMenu = new JMenu("帮助");menuBar.add(fileMenu);menuBar.add(editMenu);menuBar.add(formatMenu);menuBar.add(lookMenu);menuBar.add(helpMenu);GridBagLayout layout = new GridBagLayout(); // 设成GridBagLayout布局GridBagConstraints constraints = new GridBagConstraints();this.setFont(new Font("SansSerif", Font.PLAIN, 14));this.setLayout(layout);this.setTitle("万年历"); // 设定标题this.setIconImage(new ImageIcon("res\\title.jpg").getImage()); // 设定图标constraints.fill = GridBagConstraints.BOTH;constraints.weightx = 0.5;constraints.weighty = 0.5;layout.setConstraints(listPanel, constraints);constraints.weightx = 8.0;constraints.weighty = 0.5;layout.setConstraints(tablePanel, constraints);this.setJMenuBar(menuBar);this.add(listPanel);this.add(tablePanel);this.setSize(this.getToolkit().getScreenSize().width * 3 / 4, this.getToolkit().getScreenSize().height * 3 / 4); // 设定窗体的大小}private void showTime(){int hour = Calendar.getInstance().get(Calendar.HOUR_OF_DAY);int minute = Calendar.getInstance().get(Calendar.MINUTE);int second = Calendar.getInstance().get(Calendar.SECOND);StringBuilder sb = new StringBuilder();if (hour < 10){sb.append("0" + hour);} else{sb.append(hour);}if (minute < 10){sb.append(":0" + minute);} else{sb.append(":" + minute);}if (second < 10){sb.append(":0" + second);} elsesb.append(":" + second);label.setFont(new Font("SansSerif", Font.BOLD, 12));label.setForeground(Color.BLACK);label.setText(sb.toString());}class MyTableModel extends AbstractTableModel // 表格模型类,提供表格数据{private static final long serialVersionUID = 1L;String[] columnName = new String[]// 表格列名{ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday","Saturday" };@Overridepublic int getColumnCount() // 返回表格列数{return columnName.length;}public int getRowCount() // 返回表格行数{return 6;}public String getColumnName(int col) // 获得表格列名{return columnName[col];}public Class<? extends Object> getColumnClass(int c){return getValueAt(0, c).getClass();}public Object getValueAt(int rowIndex, int columnIndex){int month = list.getSelectedIndex();// 获得列表的月份int year = (Integer) spinner.getValue();// 获得spinner显示的年份GregorianCalendar gc = new GregorianCalendar(year, month, 1);int dayOfWeek = gc.get(Calendar.DAY_OF_WEEK) - 1; // 获得这个月的第一天是星期几int countDayInMonth = 0;// 某月的总天数,这里的月是从0-11,表示1-12月if (month == 0 || month == 2 || month == 4 || month == 6|| month == 7 || month == 9 || month == 11){countDayInMonth = 31; // 是31天的月份} else if (month == 3 || month == 5 || month == 8 || month == 10){countDayInMonth = 30; // 是30天的月份} else if (gc.isLeapYear(year) && month == 1){countDayInMonth = 29; // 闰年2月} else if (!gc.isLeapYear(year) && month == 1){countDayInMonth = 28; // 非闰年2月}String value = ""; // 因为返回值是Object类型,所以不能直接返回int类型的数据,所以转换成String类型if (rowIndex == 0) // 第一列的数据{if (columnIndex < dayOfWeek){value = "";} else{value = "" + (columnIndex - dayOfWeek + 1);}} else// 其余列的数据{if (((rowIndex - 1) * 7) + (columnIndex + 1 + 7 - dayOfWeek) <= countDayInMonth)value = (((rowIndex - 1) * 7) + (columnIndex + 1 + 7 - dayOfWeek))+ "";}return value;}}class MyListCellRenderer extends JLabel implements ListCellRenderer // 列表元素绘制类继承自JLabel,实现ListCellRenderer接口{private static final long serialVersionUID = 1L;public Component getListCellRendererComponent(JList list, // the listObject value, // value to displayint index, // cell indexboolean isSelected, // is the cell selectedboolean cellHasFocus) // does the cell have focus{String s = value.toString().trim(); // 获取选中元素的字符内容setText(s); // 显示这个字符Dimension dimension = list.getSize(); // 设定这个每个元素的大小int height = dimension.height / 12;int width = dimension.width;setSize(width, height);if (isSelected) // 如果该元素被选中,则背景色为红色{setBackground(Color.red);setForeground(list.getSelectionBackground());} else// 未被选中的元素背景色显示为灰色,前景色为粉红色{setBackground(Color.gray);setForeground(Color.pink);}setIcon(new ImageIcon("res\\mon.jpg")); // 设定该元素的图标setEnabled(list.isEnabled());setFont(new Font("SansSerif", Font.PLAIN, 20)); // 设定字体大小setOpaque(true);return this;}}class MyTableRenderer extends JLabel implements TableCellRenderer{private static final long serialVersionUID = 1L;public Component getTableCellRendererComponent(JTable table,Object value, boolean isSelected, boolean hasFocus, int row,int column){if ((Calendar.getInstance().get(Calendar.DAY_OF_MONTH) + "") // 如果这个标签上的值等于该天的值.equals(value)&& flag == true // 标记为true&& list.getSelectedIndex() == Calendar.getInstance().get(Calendar.MONTH) // 列表显示的月份是该月的值&& (Integer) spinner.getValue() == Calendar.getInstance().get(Calendar.YEAR))// spinner显示的年份是该年{setFont(new Font("SansSerif", Font.PLAIN, 40)); // 设定字体大小setText((String) value); // 显示日期字符串setBorder(UIManager.getBorder("Table.focusCellHighlightBorder"));setForeground(Color.RED); // 设定字符串颜色flag = false;} else// 如果不是改日的标签上的值{setFont(new Font("SansSerif", Font.PLAIN, 40)); // 设定字体大小setText((String) value); // 显示标签上的日期字符串if (hasFocus) // 如果是被点中的表格的单元格{setBorder(UIManager.getBorder("Table.focusCellHighlightBorder")); // 设定边框setForeground(Color.RED);// 设定日期字符串颜色} else{setForeground(null);setBorder(null);}}return this;}}}。