Java 日历程序

原创 2017年01月02日 23:21:25

最近写了一个日历的小程序,分享给大家.

界面:

这里写图片描述

package com.example.calendar;

import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class CalendarMain {

/**
 * @param args
 */
public static void main(String[] args) {
    CalendarFrame frame = new CalendarFrame();  
    frame.setTitle("日历");
    frame.setBounds(300, 200, 500, 300);
    frame.setVisible(true); // 显示窗口
    frame.validate(); // 使生效
    frame.addWindowListener(new WindowAdapter() {  // 点击叉号关闭frame程序
       @Override
    public void windowClosing(WindowEvent e) {
        System.exit(0);
    }
    });
}
}

package com.example.calendar;

import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Label;
import java.awt.Panel;
import java.awt.ScrollPane;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JOptionPane;

public class CalendarFrame extends Frame implements ActionListener{

 Label labelDay[] =new Label[42]; // 用来输出日历的天的数组
 Button titleName[] = new Button[7]; // 周一到周日的按键
 String name[] = new String[]{"日", "一", "二", "三", "四", "五", "六" };  
 TextField text1, text2; //定义输入的年份和月份
 Button nextMonth, previousMonth, Enter;//下个月,上个月,确定
 Label lab1, lab2, lab3;  //几个文本类型的字符串
 int year = 2012, month = 9;
 CalendarBean calendar;//顶一个量
 Label showMessage = new Label("", Label.CENTER); //定义一个用于显示 当前年月的label 表明,标签上应为中心。

  //窗体类
 public CalendarFrame() {
    Panel center = new Panel(); //镶嵌
    center.setLayout(new GridLayout(7,7));
    for (int i = 0; i < 7; i++) { //给周日到周六的button添加显示文本
        titleName[i] = new Button(name[i]);
        center.add(titleName[i]);
    }
    for (int i = 0; i < 42; i++) {
        labelDay[i] = new Label("", Label.CENTER);
        center.add(labelDay[i]);
    }
    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]);
    }
    lab1 = new Label("请输入日期");  //调用一个方法    new一个对象
    lab2 = new Label("年份");
    lab3 = new Label("月份");
    Enter = new Button("确定");
    text1 = new TextField(10);
    text2 = new TextField(5);
    nextMonth = new Button("下月");
    previousMonth = new Button("上月");
    Enter.addActionListener(this); //添加指定的动作侦听器
    nextMonth.addActionListener(this);
    previousMonth.addActionListener(this);
    Panel pNorth = new Panel();
    Panel pSouth = new Panel();
    pNorth.add(lab1);
    pNorth.add(lab2);
    pNorth.add(text1);
    pNorth.add(lab3);
    pNorth.add(text2);
    pNorth.add(Enter);
    pNorth.add(previousMonth);
    pNorth.add(nextMonth);
    pSouth.add(showMessage);
    showMessage.setText("日历:"+calendar.getYear() + "年" + calendar.getMonth() + "月");
    ScrollPane scrollPane = new ScrollPane(); //实现单个子组件的自动水平和/或垂直滚动的容器类
    scrollPane.add(center);
    add(scrollPane, BorderLayout.CENTER);
    add(pNorth, BorderLayout.NORTH);
    add(pSouth, BorderLayout.SOUTH);
}

@Override
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 {
        String yea = text1.getText();
        String mon = text2.getText();

        try {
            year = Integer.parseInt(yea); //把string转成int类型 
            month = Integer.parseInt(mon);
            if (month > 12 || month < 1 || year < 1) { //错误输入的处理
                JOptionPane.showMessageDialog(null, "请输入正确月份或月份");
                return;
            }else {
                calendar.setYear(year);
                calendar.setMonth(month);
            }
            String day[] = calendar.getCalendar();
            for (int i = 0; i < 42; i++) {
                labelDay[i].setText(day[i]);
            }
        } catch (NumberFormatException e2) {
            JOptionPane.showMessageDialog(null, "请输入正确的年份及月份");
        }
    }
    showMessage.setText("日历:" + calendar.getYear() + "年" + calendar.getMonth() + "月");

}
}

package com.example.calendar;

import java.util.Calendar;

//定义一个日历类
public class CalendarBean {

String day[];//天数数组
int year = 2011, month = 9; //给定一个初始年月

public void setYear(int year) {
    this.year = year;
}

public void setMonth(int month) {
    this.month= month;
}

public int getYear() {
    return year;
}

public int getMonth() {
    return month;
}

public String[] getCalendar() {  //获得日历
    String a[] = new String[42]; //定义一个以字符串数组
    Calendar calendar = Calendar.getInstance();
    calendar.set(year, month-1, 1);
    int week = calendar.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 < week + day; i++) {
        a[i] = String.valueOf(n);
        n++;
    }
    return a;
}
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

Java 日历的小程序

Java写的日历小程序,算法效率虽然不算很高,却是简单实用的 CalendarBean.java import java.util.Calendar;    public class Cale...
  • qq_29945661
  • qq_29945661
  • 2016年11月18日 21:58
  • 817

Java实现简单的日历小程序之Java图形界面开发小日历

今天给大家介绍一下如何用Java swing开发一款简单的小日历,下面我们来看代码: 首先创建一个CalendarBean类,用于基本的日期计算: package other1; import ...
  • llqqxf
  • llqqxf
  • 2016年07月14日 15:59
  • 14804

下一天(Java swing写的一个日历小程序)

同样,还是一个作业。 软件测试与质量保证的作业。 我写代码。 不用我测试。 下面贴代码。 贴图: 程序入口:package guoyang; public class Main { ...
  • guoyang1305584135
  • guoyang1305584135
  • 2017年04月11日 16:14
  • 760

Java 实训4 编写一个窗体程序显示日历

实训要求: 1.使用BorderLayout 进行总体布局 2.在North 位置放置包含两个按钮( 上月和下月)的Panel 3.在South 位置放置一个Label 用于显示当前年份和月份...
  • mcp3128
  • mcp3128
  • 2017年11月02日 18:03
  • 724

一个显示当前月的日历的java小程序

import java.text.DateFormatSymbols; import java.util.Calendar; import java.util.GregorianCalendar;...
  • ssxian1048176092
  • ssxian1048176092
  • 2014年05月12日 15:29
  • 702

用JAVA写的一个每月的日历程序,效果看正文。

2012年12月 日 一 二 三 四 五 六             1 2 3 4 5 6 7 8 9 10 ...
  • liuhenghui5201
  • liuhenghui5201
  • 2012年12月08日 20:31
  • 9374

Java编写日历程序,显示当前月份及日期

界面显示效果: 代码及解析: import java.text.DateFormatSymbols; import java.util.Calendar; import java.util.Greg...
  • u013911563
  • u013911563
  • 2016年02月16日 17:39
  • 939

java的Applet编写的日历小工具

日历效果: 实现代码: package com.test; import java.awt.BorderLayout; import java.awt.Color; import java....
  • abc_email
  • abc_email
  • 2017年06月26日 13:52
  • 176

可视化日历程序----Date时间类 Calendar日历类的应用

import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; imp...
  • defineshan
  • defineshan
  • 2016年08月15日 16:24
  • 1252

Calendar类的日历小程序

public class VisualizaCalendar {     public static void main(String[] args) throws ParseException { ...
  • shasiqq
  • shasiqq
  • 2015年03月19日 17:05
  • 867
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java 日历程序
举报原因:
原因补充:

(最多只允许输入30个字)