实践作业三 结对项目

实践作业三 结对项目

学号: 201303014008  姓名:张燕   班级:计科(高职)13-1

 

一、题目简介

  利用Java GUI的组件类、容器类和辅助类设计所选项目的用户界面,并在深入理解并掌握事件驱动程序设计原理的基础上,实现事件驱动的程序设计。

  1.实现图形界面。

  2.能以月历形式显示日期与星期。工作日、双休日、当天分别以黑色、红色和蓝色显示。

  3.支持用户通过下拉形式菜单来选择月份。

  4.通过点击“现在日期”来刷新日历。

 

二.结对分工

 

结对者: 张燕   黄彦潇

 

 张燕:代码编写以及程序测试

 

 黄彦潇:程序分析及代码规范

 

三.代码地址:

 

https://github.com/yranqiu/test/blob/master/shiyan3

 

四.测试代码:

 

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.util.*;

 

public class CalenderTrain extends JFrame implements ActionListener {

JComboBox Month = new JComboBox(); //月份下拉列表框

JComboBox Year = new JComboBox(); //年份下拉列表框

JLabel Year_l = new JLabel(“年份:”); //定义标签

JLabel Month_l = new JLabel(“月份:”); //定义标签

Date now_date = new Date(); //获取今天的日期

JButton[] button_day = new JButton[49]; //定义一个数组用来存放日期

JButton button_jump = new JButton(“日期跳转”); //现实选择日期

JButton button_today = new JButton(“现在日期”); //显示今天日期按钮

int now_year = now_date.getYear() + 1900; //获取年份值

int now_month = now_date.getMonth(); //获取月份值(当前月份-1)

boolean bool = false;

String year_int = null; //存放年份

int month_int; //存放月份

JPanel pane_ym = new JPanel(); //放置下拉列表框和控制按钮面板

JPanel pane_day = new JPanel(); //放置日期面板

JPanel pane_parent = new JPanel(); //放置以上两个面板

//定义方法绘制面板

 

public CalenderTrain() {

super(“JAVA日历程序”); //设定面板标题

//—以下几行使得关闭面板时退出程序

setDefaultCloseOperation(DISPOSE_ON_CLOSE);

addWindowListener(new WindowAdapter() {

public void windowClose(WindowEvent e) {

//System.out.print(“CLOSING THE WIN”);

 

System.exit(0);

}

});

 

setResizable(false); //面板的大小不能变化

//设定年月

/*年份的区间是当前年份的过去10年到当前年份的未来20年

* 月份正常1-12月

*/

for (int i = now_year – 10; i <= now_year + 20; i++) {

Year.addItem(i + “”);

}

for (int i = 1; i < 13; i++) {

Month.addItem(i + “”);

}

Year.setSelectedIndex(10); //设定年份下拉列表为当前年份

//Year.setText()

pane_ym.add(Year_l); //添加年份标签

pane_ym.add(Year); //添加年份下拉列表框

Month.setSelectedIndex(now_month); //设定月份下拉列表为当前月份

pane_ym.add(Month_l); //添加月份标签

pane_ym.add(Month); //添加月份下拉列表框

pane_ym.add(button_jump); //添加跳转按钮

pane_ym.add(button_today); //添加“现在日期”按钮

button_jump.addActionListener(this); //跳转按钮添加 监听事件

button_today.addActionListener(this); //“现在日期”按钮添加 监听事件

//年月设定结束

//初始化日期按钮并绘制

pane_day.setLayout(new GridLayout(7, 7));

for (int i = 0; i < 49; i++) {

button_day[i] = new JButton(” “);

pane_day.add(button_day[i]);

}

this.setDay(); //调用setDay()方法

pane_parent.setLayout(new BorderLayout()); //设定布局管理器

setContentPane(pane_day);

setContentPane(pane_ym);

pane_parent.add(pane_day, BorderLayout.SOUTH);

pane_parent.add(pane_ym, BorderLayout.NORTH);

setContentPane(pane_parent);

pack();

show();

}

 

//SET DAY 方法,显示日期

void setDay() {

if (bool) {

year_int = now_year + “”;

month_int = now_month;

} else {

year_int = Year.getSelectedItem().toString();

month_int = Month.getSelectedIndex();

    //year_int=Year.getText();

    //month_int=Integer.parseInt(Month.getText());

}

 

int year_sel = Integer.parseInt(year_int) – 1900; //获得年份值

Date dt = new Date(year_sel, month_int, 1); //构造一个日期

GregorianCalendar cal = new GregorianCalendar(); //创建一个Calendar实例

cal.setTime(dt);

String week[] = { “星期日”, “星期一”, “星期二”, “星期三”, “星期四”, “星期五”, “星期六” };

int day = 0; //day中存放某个月份的天数

int day_week = 0; //用来存放某个月的第一天是星期几的数值

//–将星期添加到前7个按钮中

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

button_day[i].setText(week[i]);

}

//–

/*判断是几月份,根据它来设定day的值

* 其中二月份要判断是否是闰年

*/

if (month_int == 0

|| month_int == 2

|| month_int == 4

|| month_int == 6

|| month_int == 7

|| month_int == 9

|| month_int == 11) {

day = 31;

} else if (

month_int == 3

|| month_int == 5

|| month_int == 8

|| month_int == 10) {

day = 30;

} else {

if (cal.isLeapYear(year_sel)) {

day = 29;

} else {

day = 28;

}

}

day_week = 7 + dt.getDay();

int count = 1;

/*绘制按钮

*首先要根据选定的月份的第一天是星期几来确定我们绘制按钮的起始位置

* 其中day_week就是我们要绘制的起始位置

* 对于那些没有数值可以显示的按钮要置空

*/

for (int i = day_week; i < day_week + day; count++, i++) {

if (i % 7 == 0

|| i == 13

|| i == 20

|| i == 27

|| i == 48

|| i == 34

|| i == 41) {

if (i == day_week + now_date.getDate() – 1) {

button_day[i].setForeground(Color.blue);

button_day[i].setText(count + “”);

} else {

button_day[i].setForeground(Color.red);

button_day[i].setText(count + “”);

}

 

} else {

if (i == day_week + now_date.getDate() – 1) {

button_day[i].setForeground(Color.blue);

button_day[i].setText(count + “”);

} else {

button_day[i].setForeground(Color.black);

button_day[i].setText(count + “”);

}

}

}

 

 

//–对于没有日期数值显示的按钮进行置空处理

if (day_week == 0) {

for (int i = day; i < 49; i++) {

button_day[i].setText(” “);

}

} else {

//第一天前面的按钮置空

for (int i = 7; i < day_week; i++) {

button_day[i].setText(” “);

} //最后一天后面的按钮置空

for (int i = day_week + day; i < 49; i++) {

button_day[i].setText(” “);

}

}

}

 

 

//点击按钮产生的效果

public void actionPerformed(ActionEvent e) {

if (e.getSource() == button_jump) {

bool = false;

this.setDay(); //如果点击跳转按钮就调用setDay()方法重新绘制按钮

 

} else if (e.getSource() == button_today) {

bool = true;

this.setDay(); //如果点击现在日期按钮,得到今天的日期

Month.setSelectedIndex(now_month);//将月份置为当前月份

Year.setSelectedIndex(10); //将年份置为当前年份

 

}

}

public static void main(String[] args) {

    CalenderTrain ct = new CalenderTrain();

}

}

 

}

 五、测试结果

<span>实践作业三 结对项目</span><span>实践作业三 结对项目</span>

 

六.问题及心得:

在本次实践中,代码编写经常出现错误,运行了好几次才成功,通过结对,我学会了和队员进行合作,容易提高效率和找到自己的错误并改正。

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/119431.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 初识公有云和私有云

    初识公有云和私有云最近刚开始接触云,粗浅记录下来自己的学习。第一个问题:什么是云计算?第二个问题:为什么要上云?第三个问题:公有云和私有云有什么区别,应该怎么选?云计算,是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问,进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。【百度百科】举例来讲,建立一个超级数据中心,提高算力,达到普通电脑无法企及的每秒10万亿次的运算能力,一般用户在付费后则可通过

    2022年6月25日
    26
  • JAVA中输出语句中+的作用[通俗易懂]

    JAVA中输出语句中+的作用[通俗易懂]System.out.println()输出语句里面的+号,根据俩边的数据类型作不同处理,有俩种情况。①+后输出字符串,例如1+”a”输出的就是1a②+后输出数字,而不是字符串,例如1+‘a’,输出的就是98个人理解,觉得1+“a”,String类的优先级比较高,所以把1转换成了字符串,最后连接了起来,1+’a’是Int型的精度比较高,故将a转换成了int型再相加…

    2022年7月16日
    23
  • counter 用法_countdown用法

    counter 用法_countdown用法Counter类:Counter类的目的是用来跟踪值出现的次数。它是一个无序的容器类型,以字典的键值对形式存储,其中元素作为key,其计数作为value。计数值可以是任意的Interger(包括0和

    2022年8月1日
    7
  • Log4j中conversionPattern的含义「建议收藏」

    Log4j中conversionPattern的含义「建议收藏」%a–表示礼拜几,英文缩写形式,比如“Fri”%A–表示礼拜几,比如“Friday”%b–表示几月份,英文缩写形式,比如“Oct”%B–表示几月份,“October”%c–

    2022年7月2日
    26
  • 试用员工转正申请表怎么填_试用期转正申请500字

    试用员工转正申请表怎么填_试用期转正申请500字附件1:XXXX试用员工转正申请表XXXX试用员工转正申请表姓名张三部门研发部职务Java工程师学历大专毕业院校及时间XX大学2012.9-2015.7专业计算机信息管理试

    2022年8月3日
    20
  • pycharm设置壁纸_pycharm界面开发

    pycharm设置壁纸_pycharm界面开发一:打开pycharm,按两次shift输入setbackgroundimage或者用快捷键Ctrl+shift+A二:选择setbackgroundimage进入如下界面第一处的箭头是背景图片的路径,第二个是透明度。选完图片之后点击ok就可以看到效果啦!三:最终效果ps:提升一下敲代码的big,哈哈!…

    2022年8月27日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号