今天给大家介绍一下如何用java swing开发一款简单的小日历,下面我们来看代码:

首先创建一个calendarbean类,用于基本的日期计算:

package other1;

import java.util.calendar;

public class calendarbean

{

string day[];

int year=2005,month=0;

public void setyear(int year)

{

this.year=year;

}

public int getyear()

{

return year;

}

public void setmonth(int month)

{

this.month=month;

}

public int getmonth()

{

return month;

}

public string[] getcalendar()

{

string a[]=new string[42];

calendar date=calendar.getinstance();

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

int week=date.get(calendar.day_of_week)-1;

int day=0;

//判断大月份

if(month==1||month==3||month==5||month==7

||month==8||month==10||month==12)

{

day=31;

}

//判断小月

if(month==4||month==6||month==9||month==11)

{

day=30;

}

//判断平年与闰年

if(month==2)

{

if(((year%4==0)&&(year%100!=0))||(year%400==0))

{

day=29;

}

else

{

day=28;

}

}

for(int i=week,n=1;i

{

a[i]=string.valueof(n) ;

n++;

}

return a;

}

}

然后再创建一个主界面类,用于界面的实现:

package other1;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class calendarframe extends jframe implements actionlistener

{

jlabel labelday[]=new jlabel[42];

jtextfield text=new jtextfield(10);

jbutton titlename[]=new jbutton[7];

jbutton button = new jbutton();

string name[]={"日","一","二","三", "四","五","六"};

jbutton nextmonth,previousmonth;

int year=1996,month=1; //启动程序显示的日期信息

calendarbean calendar;

jlabel showmessage=new jlabel("",jlabel.center);

jlabel lbl1 = new jlabel("请输入年份:");

jlabel lbl2=new jlabel(" ");

public calendarframe()

{

setbackground(new color(0, 128, 128));

jpanel pcenter=new jpanel();

pcenter.setbackground(new color(0, 139, 139));

//将pcenter的布局设置为7行7列的gridlayout 布局。

pcenter.setlayout(new gridlayout(7,7));

//pcenter添加组件titlename[i]

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

{

titlename[i]=new jbutton(name[i]);

pcenter.add(titlename[i]);

}

//pcenter添加组件labelday[i]

for(int i=0;i<42;i++)

{

labelday[i]=new jlabel("",jlabel.center);

pcenter.add(labelday[i]);

}

text.addactionlistener(this);

calendar=new calendarbean();

calendar.setyear(year);

calendar.setmonth(month);

string day[]=calendar.getcalendar();

for(int i=0;i<42;i++)

{

labelday[i].settext(day[i]);

}

nextmonth=new jbutton("下月");

previousmonth=new jbutton("上月");

button=new jbutton("确定");

//注册监听器

nextmonth.addactionlistener(this);

previousmonth.addactionlistener(this);

button.addactionlistener(this);

jpanel pnorth=new jpanel(),

psouth=new jpanel();

pnorth.add(showmessage);

pnorth.add(lbl2);

pnorth.add(previousmonth);

pnorth.add(nextmonth);

psouth.add(lbl1);

psouth.add(text);

psouth.add(button);

showmessage.settext("日历:"+calendar.getyear()+"年"+ calendar.getmonth()+"月" );

scrollpane scrollpane=new scrollpane();

scrollpane.add(pcenter);

getcontentpane().add(scrollpane,borderlayout.center);// 窗口添加scrollpane在中心区域

getcontentpane().add(pnorth,borderlayout.north);// 窗口添加pnorth 在北面区域

getcontentpane().add(psouth,borderlayout.south);// 窗口添加psouth 在南区域。

}

public void actionperformed(actionevent e)

{

if(e.getsource()==nextmonth)

{

month=month+1;

if(month>12)

month=1;

calendar.setmonth(month);

string day[]=calendar.getcalendar();

for(int i=0;i<42;i++)

{

labelday[i].settext(day[i]);

}

}

else if(e.getsource()==previousmonth)

{

month=month-1;

if(month<1)

month=12;

calendar.setmonth(month);

string day[]=calendar.getcalendar();

for(int i=0;i<42;i++)

{

labelday[i].settext(day[i]);

}

}

else if(e.getsource()==button)

{

month=month+1;

if(month>12)

month=1;

calendar.setyear(integer.parseint(text.gettext()));

string day[]=calendar.getcalendar();

for(int i=0;i<42;i++)

{

labelday[i].settext(day[i]);

}

}

showmessage.settext("日历:"+calendar.getyear()+"年"+calendar.getmonth()+"月" );

}

}

最后用一个类调用即可:

package other1;

import javax.swing.jframe;

import javax.swing.uimanager;

public class calendarmainclass

{

public static void main(string args[])

{

try {

uimanager.setlookandfeel("com.sun.java.swing.plaf.windows.windowslookandfeel"); //windows界面风格

}catch (exception e) {

e.printstacktrace();

}

calendarframe frame=new calendarframe();

frame.setbounds(100,100,360,300);

frame.settitle("日历小程序");

frame.setlocationrelativeto(null);//窗体居中显示

frame.setvisible(true);

frame.setdefaultcloseoperation(jframe.exit_on_close);

}

}

运行结果如下:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

希望与广大网友互动??

点此进行留言吧!

java 日历界面_Java实现简单日历小程序 Java图形界面小日历开发相关推荐

  1. 微信读书登陆界面java_(JAVA后端)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好...

    转载地址:(JAVA后端)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好 转载请注明出处 一.环境搭建 相关环境软件:JDK1 ...

  2. 微信运动步数:小程序+Java后端,源码可下载

    微信运动步数:小程序+Java后端 更多资源:www.jeeweixin.com 功能说明: 1.获取和展示用户的微信运动步数,计算卡路里: 2.用户打开小程序即可实现步数打卡入库: 3.通过日历展示 ...

  3. 微信小程序 java银行业务管理系统python php

    (1)小程序端 基于微信小程序的南通农商银行微银行系统包括两个部分,微信小程序端信息查询和业务处理,后台信息的管理. 微信小程序通过微信端访问系统,未经注册的用户先要进行注册,然后进入到首页,包括最新 ...

  4. 解密微信小程序Java登录流程(ssm实现具体功能)

    点击上方"好好学java",选择"置顶公众号" 优秀学习资源.干货第一时间送达! 精彩内容 java实战练习项目教程 2018微服务资源springboot.s ...

  5. 腾讯小程序 java编写_微信小程序 使用腾讯地图SDK详解及实现步骤

    微信小程序 使用腾讯地图SDK详解及实现步骤 近期在做一款彩票服务类项目中用到了腾讯地图提供的小程序解决方案,拿来给大家分享一下! 使用起来非常简单,就是一些功能还有待完善. 官方文档:http:// ...

  6. 【微信小程序系列】微信小程序超简单教程,基本语法,获取用户基本数据信息,实现对云数据库的增删改查及小程序外部api的引用示例(附源码)

    [微信小程序系列]微信小程序超简单教程 小程序项目结构 静态页面的构成 HTML:结构 css:样式 js:行为 小程序 页面全部存放在pages, 而且pages目录只能存放页面 页面包括4个文件, ...

  7. 微信小程序java装修家装系统

    s 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序运行软件:微信开发者 巧匠家装小程序的系统项目的概述设计分析,主要内容有学习平台的具体分析,进行数据库的是设计,数据采用mys ...

  8. 「小程序JAVA实战」微信小程序简介(一)

    转自:https://idig8.com/2018/08/09/xiaochengxu-chuji-01/ 一直想学习小程序,苦于比较忙,加班比较多没时间,其实这都是理由,很多时候习惯了搬砖,习惯了固 ...

  9. 微信小程序 java服务器发送通知给用户 全流程 (获取openid 获取formid)

    本文写的比较简单,只是一个简单的实现,如有错误,欢迎大家指出,本文为个人学习笔记,只供参考. 如果成功了给句评论,或来个赞呗! 本文大致分为三个内容: 一.注册小程序 二.微信小程序开发代码 三.ja ...

  10. (微信小程序)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好

    转载地址:(微信小程序)微信小程序-毕设级项目搭建-微信阅读小程序(内含源码,微信小程序+java逻辑后台+vue管理系统)~不求完美,实现就好 转载请注明出处 作者:Happy王子乐 个人网站(整理 ...

最新文章

  1. python编程案例教程答案-Python基础案例教程
  2. java对象 Java中 VO、 PO、DO、DTO、 BO、 QO、DAO、POJO的概念
  3. 【控制】《多智能体系统的动力学分析与设计》徐光辉老师-目录
  4. 看尽SLAM、ReID和文字识别等技术进展!15位视觉技术大咖齐聚一堂
  5. Mybatis接口注解开发
  6. 利用XML实现通用WEB报表打印 卢彦
  7. post 请求 argument type mismatch_Flask-RESTful 请求解析
  8. 大兄dei,早点看清this吧
  9. Spring整合JMS——三种connectionFactory
  10. 硅谷初创企业控制成本 裁员风渐起
  11. 005 IK-analyzer添加搜狗词库
  12. Linux(centos7下载安装)
  13. 微信小程序之实现下拉刷新效果
  14. U盘量产后USB鼠标和键盘都无法使用,如何解决?
  15. 农夫山泉病毒性营销方案策划
  16. matlab仿真 多胞体,四维空间(三):谈正多胞体
  17. copy() 与 clone() 的区别
  18. php同时接受get post,php中form表单同时使用POST和GET传递参数说明
  19. 歌手祁隆离婚再起波澜,与和合国际收购《借我星光》版权有关系吗
  20. ElementUI中某一列插入组件(slot-scope=“scope“用法)

热门文章

  1. Windows XP
  2. VBA的 随机数 rnd 和 randomize 如何配合使用? 伪随机数带来的问题,根据需要产生不同的随机数!
  3. 社会排斥范式:通过Cyberball游戏来探索其中的机制
  4. Multisim14.0仿真:单相桥式全控整流电路
  5. 【VBA】批量转化表格格式(xls转xlsx、csv转xlsx)
  6. OpenWrt 基础软件模块之netifd
  7. 分组 (group)
  8. 520表白文案来了[联络易]
  9. 创意信息子公司作为华为合作伙伴 携产品登录华为云端展厅
  10. [笔记]音视频学习之SDL篇《六》使用SDL_ttf绘制True Type字体