Java课程设计-定时器(团队)

一、团队介绍(没头脑和不高兴)

  • 陈文俊[组长] 201521123047 网络1512 宣委

  • 郑子熙 201521123045 网络1512

二、项目Git链接

定时器

三、项目git提交记录截图

四、项目功能架构图与主要功能流程图

五、项目运行截图

界面

输入时间

运行一段时间后暂停

隐藏倒计时面板

六、程序关键代码

public class Time {

	public static String getTime(int seconds) {
		Integer hours = seconds / 3600;
		Integer minutes = seconds / 60;
		Integer second = seconds % 60;
		String time = "";
		if (minutes >= 60)
			minutes %= 60;
		if (hours < 10)
			time += "0" + hours + " : ";
		else
			time += hours + " : ";
		if (minutes < 10)
			time += "0" + minutes + " : ";
		else
			time += minutes + " : ";
		if (second < 10)
			time += "0" + second;
		else
			time += second;
		return time;
	}

	public static Integer getSeconds(Integer hours, Integer minutes, Integer seconds) {
		return hours * 3600 + minutes * 60 + seconds;
	}

public void actionPerformed(ActionEvent e) {
			if (e.getSource() == btnBegin) {
				if (tfdHours.getText().equals("") || tfdHours.getText() == null || tfdMinutes.getText().equals("")
						|| tfdMinutes.getText() == null || tfdSeconds.getText().equals("") || tfdSeconds == null) {
					JOptionPane.showMessageDialog(null, "请完成倒计时设置", "提示", JOptionPane.PLAIN_MESSAGE);
				} else {
					showTime = Time.getSeconds(new Integer(tfdHours.getText()), new Integer(tfdMinutes.getText()),
							new Integer(tfdSeconds.getText()));
					setTime = showTime;
					// 改变面板值
					labTime.setText(Time.getTime(showTime));
					labSetTime.setText("计时总秒数 : " + setTime);
					tfdHours.setText("");
					tfdMinutes.setText("");
					tfdSeconds.setText("");

					flag = true;
					new Thread(this).start();
				}
			}
			if (e.getSource() == btnPause) {
				flag = false;
			}
			if (e.getSource() == btnContinue) {
				flag = true;
				new Thread(this).start();
			}
			if (e.getSource() == btnHidden) {
				this.remove(jpShowTime);
				repaint();
			}
			if (e.getSource() == btnShow) {
				this.add(jpShowTime).setBounds(0, 400, 1200, 400);
				repaint();
			}
			if (e.getSource() == btnExit) {
				System.exit(-1);
			}
		}

		public void run() {
			while (true) {
				if (showTime <= 0) {
					JOptionPane.showMessageDialog(null, "时间到", "提示", JOptionPane.PLAIN_MESSAGE);
					break;
				}
				// 判断暂停
				if (!flag) {
					break;
				}
				try {
					Thread.sleep(1000);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				showTime -= 1;
				labTime.setText(Time.getTime(showTime));
				labPassTime.setText("已过秒数 : " + (setTime - showTime));
				labRemainTime.setText("剩余秒数 : " + showTime);
			}
		}

		public void keyTyped(KeyEvent e) {
		}

		public void keyPressed(KeyEvent e) {
			if (e.getKeyCode() == KeyEvent.VK_F8) {
				if (tfdHours.getText().equals("") || tfdHours.getText() == null || tfdMinutes.getText().equals("")
						|| tfdMinutes.getText() == null || tfdSeconds.getText().equals("") || tfdSeconds == null) {
					JOptionPane.showMessageDialog(null, "请完成倒计时设置", "提示", JOptionPane.PLAIN_MESSAGE);
				} else {
					showTime = Time.getSeconds(new Integer(tfdHours.getText()), new Integer(tfdMinutes.getText()),
							new Integer(tfdSeconds.getText()));
					setTime = showTime;
					// 改变面板值
					labTime.setText(Time.getTime(showTime));
					labSetTime.setText("计时总秒数 : " + setTime);
					tfdHours.setText("");
					tfdMinutes.setText("");
					tfdSeconds.setText("");

					flag = true;
					new Thread(this).start();
				}
			} else if (e.getKeyCode() == KeyEvent.VK_F9) {
				flag = false;
			} else if (e.getKeyCode() == KeyEvent.VK_F10) {
				flag = true;
				new Thread(this).start();
			} else if (e.getKeyCode() == KeyEvent.VK_F11) {
				this.remove(jpShowTime);
				repaint();
			} else if (e.getKeyCode() == KeyEvent.VK_F12) {
				this.add(jpShowTime).setBounds(0, 400, 1200, 400);
				repaint();
			}
		}

		public void keyReleased(KeyEvent e) {
		}
	}

七、尚待改进或者新的想法

界面可以花时间做得更加美观,还用图标来代替按钮。

八、团队成员任务分配,团队成员课程设计博客链接(以表格形式呈现),标明组长。

姓名 学号 任务分配 博客地址
陈文俊[组长] 201521123047 框架构建、时间设置面板、倒计时面板、按钮设置 博客地址
郑子熙 201521123045 main函数的编写、负责TIme函数的编写、用于计算时间、按钮功能的实现 博客地址
posted @ 2017-06-22 17:52  陈大家  阅读(285)  评论(0编辑  收藏  举报