【实训要求】

* 1.使用BorderLayout进行总体布局 
 * 2.在North位置放置包含两个按钮(上月和下月)的Panel
 * 3.在South位置放置一个Label用于显示当前年份和月份 
 * 4.在Center位置放置一个显示日历的Panel 
 * 5.显示日历的Panel设置7行7列的GridLayout布局,其中第1行放置7个按钮显示周“几”,其他6行放置42个Label用于显示日期
 * 6.启动程序时日历中默认显示当前月份的日历 
 * 7.点击“上月”和“下月”可翻看上个月和下个月的日历

【程序运行效果】

【代码】

package com.practise.Calendar;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Calendar;import javax.swing.JLabel;/*** 实训要求: * 1.使用BorderLayout进行总体布局 * 2.在North位置放置包含两个按钮(上月和下月)的Panel* 3.在South位置放置一个Label用于显示当前年份和月份 * 4.在Center位置放置一个显示日历的Panel * 5.显示日历的Panel设置7行7列的GridLayout布局,其中第1行放置7个按钮显示周“几”,其他6行放置42个Label用于显示日期* 6.启动程序时日历中默认显示当前月份的日历 * 7.点击“上月”和“下月”可翻看上个月和下个月的日历* * @author DoubleShift**/
public class CalendarBean implements ActionListener {JLabel now; // 显示当前日期JLabel[] label; // 显示日历// String[] day;int year = 0;int month = 0;public void setYear(int year) {this.year = year;}public void setMonth(int month) {this.month = month;}@Overridepublic void actionPerformed(ActionEvent e) {String str = e.getActionCommand();if (str.equals("lastmonth")) {month--;if (month == 0) {month = 12;year--;}} else if (str.equals("nextmonth")) {month++;if (month == 13) {month = 1;year++;}}now.setText("日历:" + year + "年" + month + "月");String[] a = getCalendar(); // 获取当前月份的日历for (int i = 0; i < a.length; i++) {label[i].setText("          " + a[i]);}}public String[] getCalendar() {String[] a = new String[42]; // 6*7Calendar rili = Calendar.getInstance();rili.set(year, month - 1, 1); // 设置当月一号int weekDay = rili.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 = 0; i < weekDay; i++) {a[i] = "    "; // 之前设置为空}for (int i = weekDay, n = 1; i < weekDay + day; i++) {a[i] = String.valueOf(n);n++;}for (int i = weekDay + day; i < a.length; i++) {a[i] = "    ";  // 之后设置为空}return a;}}
package com.practise.Calendar;import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;/*** * @author DoubleShift**/
public class MyCalendar extends JFrame {private static final long serialVersionUID = 1L;JButton bx, by, b1, b2, b3, b4, b5, b6, b7;CalendarBean cbBean = new CalendarBean();JLabel[] label;JLabel now;public static void main(String[] args) {MyCalendar myCalendar = new MyCalendar();myCalendar.setSize(500, 400);myCalendar.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);myCalendar.setTitle("万年历");myCalendar.setVisible(true);}public MyCalendar() {int year, month;setLayout(new BorderLayout());// 北面設置上月和下月的按钮JPanel pNorth = new JPanel();cbBean = new CalendarBean();cbBean.setYear(2019);cbBean.setMonth(12);String[] a = cbBean.getCalendar();bx = new JButton("上月");bx.setActionCommand("lastmonth");bx.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {cbBean.actionPerformed(e);}});by = new JButton("下月");by.setActionCommand("nextmonth");by.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {cbBean.actionPerformed(e);}});pNorth.add(bx);pNorth.add(by);add(pNorth, BorderLayout.NORTH);// 面板中间设置日历显示GridLayout grid = new GridLayout(7, 7);JPanel pCenter = new JPanel();b1 = new JButton("日");b2 = new JButton("一");b3 = new JButton("二");b4 = new JButton("三");b5 = new JButton("四");b6 = new JButton("五");b7 = new JButton("六");pCenter.add(b1);pCenter.add(b2);pCenter.add(b3);pCenter.add(b4);pCenter.add(b5);pCenter.add(b6);pCenter.add(b7);label = new JLabel[42];for (int i = 0; i < 42; i++) {label[i] = new JLabel();pCenter.add(label[i]);}cbBean.label = this.label;for (int i = 0; i < a.length; i++) {label[i].setText("          " + a[i]);}pCenter.setLayout(grid);add(pCenter, BorderLayout.CENTER);// 面板南面設置当前日期JPanel southJPanel = new JPanel();now = new JLabel();now.setText("日历:" + cbBean.year + "年" + cbBean.month + "月");cbBean.now = this.now;southJPanel.add(now);add(southJPanel, BorderLayout.SOUTH);}
}

【Java小项目实训】编写一个窗体程序显示的日历 万年历相关推荐

  1. 【Java小项目实训】编写一个窗体程序模拟单词拼写

    实训要求 窗口中有一个TextFie1d对象和一个按钮对象,将这两个对象添加到一个面板中,然后将该面板添加到窗口的北面.用户在TextField 对象中输入一个英文单词,然后回车或单击按钮,程序将创建 ...

  2. 用java编写日历添加窗口一角_Java 实训4 编写一个窗体程序显示日历

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

  3. Java实训——创建一个窗体程序,实现简单的数学加、减法测试。

    实训要求: 代码: MainClass类: public class MainClass {/*** @param args*/public static void main(String[] arg ...

  4. Java小项目实训——扑克牌

    项目要求: 一个窗口实现无序发放52张扑克牌:另一个窗口实现记录打出的扑克牌 Poke类 public class Poke {String name[] = { "fang", ...

  5. 火云开发课堂 - 《使用Cocos2d-x 开发3D游戏》系列 第二十四节:小项目实训《绝命沙滩》

    <使用Cocos2d-x 开发3D游戏>系列在线课程 第二十四节:小项目实训<绝命沙滩> 视频地址:http://edu.csdn.net/course/detail/1330 ...

  6. java小游戏实训报告心得_Java实训报告-扫雷.doc

    Java实训报告-扫雷 实训报告书 实训名称: JAVA程序设计实训 系 (部): 信息工程系 专业班级: 计算机科学与技术08-1 学生姓名: 学 号: 指导教师: 完成日期: 山东科技大学泰山科技 ...

  7. java一元二次方程程序设计实验报告_Java 组件及事件处理实训 实训2:编写一个窗体程序,用于计算一元二次方程...

    代码: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class EquationFrame ext ...

  8. java小游戏实训目的_Java弹球小游戏实验报告.doc

    Java弹球小游戏实验报告 滨江学院 Java程序设计实验报告 题 目 弹球小游戏 姓 名 许浩 学 号 20112346064 学 院 滨江学院 专 业 网络工程 年 级 2011级 指导教师 张舒 ...

  9. JAVA小项目(一)——一个简单的记帐本【轻松入门,附源码】

    目录 1. 实现效果 2.项目架构 3. 细节代码实现

  10. 用Java编辑员工信息_编写一个函数来显示基于Oracle中特定部门的员工信息?

    这些是我创建的表的列表,并为创建的表插入值: CREATE TABLE DEPARTMENT (DEPARTMENT_ID NUMBER PRIMARY KEY, DEPARTMENT_NAME VA ...

最新文章

  1. Mac homebrew类似apt-get命令安装包
  2. python将视频转为多个gif
  3. [洛谷1390]公约数的和
  4. Python中面向对象的讲解(1)
  5. boost::log::static_type_dispatcher用法的测试程序
  6. 高质量c/c++编程(9)
  7. HTML5的LocalStorage和sessionStorage的使用 -缓存
  8. 2021-10-07
  9. 数据库表存放在哪里_一文了解数据库和数据仓库
  10. android解析布局树,Android Viewtreeobserver解析
  11. 水力冲孔数值模拟前景_防喷器成形工艺的有限元数值模拟研究
  12. 基于Bootstrap的Asp.net Mvc 分页的实现(转)
  13. 用Instant client批量安装Oracle客户端-安装配置
  14. 你不知道的接口测试之简单的开始
  15. 【转载】高速电路设计中的电源地
  16. layui 时间控件二次渲染,点击一个自定义按钮清空/重置时间控件
  17. 计算机机房实训计划,计算机专业实习计划安排.docx
  18. 以计算机作为类 触摸板作为接口,怎样用Arduinopromicro将电脑触控板转换为USB设备...
  19. html5水墨,web前端入门到实战:html5网页特效-水墨动画
  20. 夜深模拟器不能连接 adb shell 解决方案

热门文章

  1. 什么是瑞利分布和准静态平坦衰落信道?
  2. 用proxifier、ccproxy、teamviewer做网络代理
  3. Geodesic flow kernel for unsupervised domain adaptation
  4. 半导体器件基础与二极管电路
  5. 关于画法几何和机械制图有感
  6. c语言试题1答案,c语言试题1有答案
  7. 迅捷fw313r服务器无响应,FAST迅捷FW313R路由器的固件更新教程
  8. 生成android toolchain
  9. ipv6访问文件服务器,ipv4客户端如何访问ipv6服务器
  10. Java例15.13——使用MVC结构计算三角形面积