今天给大家介绍一下如何用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 gui 日历_Java实现简单日历小程序 Java图形界面小日历开发相关推荐

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

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

  2. java游戏小程序_javaCode 158个经典小程序,里面包含各种小游戏代码,能提高初学者 趣,同事可以从中学习 Games 246万源代码下载- www.pudn.com...

    文件名称: javaCode下载  收藏√  [ 5  4  3  2  1 ] 所属分类: Games 开发工具: Java 文件大小: 543 KB 上传时间: 2015-10-25 下载次数: ...

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

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

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

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

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

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

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

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

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

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

  8. 微信小程序-JAVA实现微信支付功能(微信支付2.0)

    微信小程序-JAVA实现微信支付功能(微信支付2.0) 一.前言 本博客主要介绍JAVA后台与微信小程序(UNI-APP或者原生微信小程序)的微信支付的实现,如果是APP或者H5的开发暂时不支持,具体 ...

  9. 微信小程序 科学计算器(微信小程序+java+python)

    微信小程序之科学计算器 (微信小程序+java+python) 先把自己的小程序和页面贴出来 1.前后端实现步骤: 1.前端采用的就是微信小程序开发工具,后端采用的是以springboot为基础,调用 ...

  10. JAVA微信小程序图书馆座位预约小程序系统毕业设计 开题报告

    本文给出的java微信小程序系统毕业设计开题报告,仅供参考!(具体模板和要求按照自己学校给的要求修改) 选题目的和意义 目的:本课题主要目标是设计并能够实现一个基于微信小程序预约订座小程序,前台用户使 ...

最新文章

  1. 【Unity教程】创建一个完整的驾驶游戏
  2. R语言ggplot2包和ggtext包在可视化图像中的指定位置添加文本框(横向文本框、竖向文本框)
  3. atitit.Sealink2000国际海运信息管理系统
  4. concurrenthashmap是什么锁_多线程为什么要用ConcurrentHashMap
  5. SAP BC417 课程中文自学笔记
  6. Spring Boot应用程序的“本地服务”
  7. php mysql 查询时间_PHP-MySQL查询需要大量时间才能执行
  8. 谷歌推出 Kotlin 免费在线课程
  9. informix 如何下载
  10. 如何在校外下载期刊全文应对大家工作后的资料搜寻
  11. Turbo C程序中点阵汉字库和曲线汉字库的显示
  12. 索尼NW-A55日版改中文
  13. c语言windows程序设计-在windows中使用printf,Windows编程(4)-在Windows中使用printf
  14. 任正非谈成功秘诀:28年只对准一个城墙口冲锋
  15. unity3d网络延时检测
  16. 1.4、云计算HCIA虚拟化存储基础知识
  17. 计讯物联环保数采仪全系列产品为节能降耗减碳贡献绿色力量
  18. 《中文核心期刊要目总览(2014年版)》——计算机、自动化类
  19. QT获取当前目录的上一级目录dir->cdUp()
  20. 线程池和信号量模拟酒店(旅店)预定房间

热门文章

  1. David I 盛大之行 --关于delphi2010
  2. java进行参数快捷校验,ehi-verification
  3. Java春招面试复习:JDK 5-15都有哪些经典新特性
  4. DSS 部署环境需求清单
  5. 纯国产环境JAVA程序(Springboot + Mybatis + 达梦数据库)搭建
  6. sinx泰勒展开_高考中怎么用泰勒公式?
  7. 全面理解Python迭代器和生成器
  8. 必看:C语言高效学习方法(附经典试题详解)
  9. mysql同张表关联多次查询_MySQL多次单表查询和多表联合查询
  10. 深圳市补贴政策在线查询平台,2021年最新深圳企业补贴项目