JAVA课程设计 - 闹钟的设计与实现 11计科本01班 张慧(2)

2019-01-19 11:05

三、程序源代码

import java.applet.Applet; import java.applet.AudioClip; import java.awt.Container; import java.awt.GridLayout; import java.awt.event.*; import java.io.File;

import java.net.MalformedURLException; import java.text.SimpleDateFormat; import java.util.Date; import javax.swing.*;

class clock extends JFrame implements Runnable {

JLabel ri, shi, fen, miao, dangqian, guanji; JButton queding, dakai;

JTextField music, RI, SHI, FEN, MIAO; int h = 0, f = 0, m = 0, r = 0; boolean fo = false, foo = false; public AudioClip soumd1;

int riqi, shizhong, fenzhong, miaozhong; public clock() {

Container c = getContentPane(); c.setLayout(new GridLayout(4, 1)); JPanel jp = new JPanel(); dangqian = new JLabel(); jp.add(dangqian); c.add(jp);

JPanel jp3 = new JPanel();

guanji = new JLabel(\离闹铃时间:0日0时0分0秒\ jp3.add(guanji); c.add(jp3);

JPanel jp1 = new JPanel(); music = new JTextField(20);

dakai = new JButton(\选择闹铃音乐\ jp1.add(music); jp1.add(dakai); c.add(jp1);

ri = new JLabel(\日\ RI = new JTextField(4); shi = new JLabel(\时\ SHI = new JTextField(4); fen = new JLabel(\分\ FEN = new JTextField(4); miao = new JLabel(\秒\ MIAO = new JTextField(4); JPanel jp2 = new JPanel(); jp2.add(ri); jp2.add(RI); jp2.add(shi); jp2.add(SHI); jp2.add(fen); jp2.add(FEN); jp2.add(miao); jp2.add(MIAO);

queding = new JButton(\确定\

- 6 -

jp2.add(queding); c.add(jp2);

setSize(400, 160); setVisible(true);

dakai.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

JFileChooser fileChooser = new JFileChooser();

fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);

fileChooser.setCurrentDirectory(new File(\ // 设置文件选择器当前目录

fileChooser.setFileFilter(new javax.swing.filechooser.FileFilter() {

public boolean accept(File file) {

String name = file.getName().toLowerCase(); return name.endsWith(\ || name.endsWith(\ || file.isDirectory(); }

public String getDescription() {

return \音乐文件(*.wav,*.au)\ } });

if (fileChooser.showOpenDialog(clock.this) == JFileChooser.APPROVE_OPTION) {

String fileName = fileChooser.getSelectedFile() .getAbsolutePath(); music.setText(fileName); } } });

queding.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent event) {

if (queding.getText().equals(\确定\ try {

h = Integer.parseInt(SHI.getText()); f = Integer.parseInt(FEN.getText()); m = Integer.parseInt(MIAO.getText());

if (1 <= h && h <= 31 && 0 <= h && h <= 23 && 0 <= f && f <= 59 && 0 <= m && m <= 59) { Date now = new Date();

SimpleDateFormat ri = new SimpleDateFormat(\ if (RI.getText() == null || RI.getText().equals(\ r = Integer.parseInt(ri.format(now)); RI.setText(ri.format(now)); } else

r = Integer.parseInt(RI.getText()); fo = true; } else

JOptionPane.showMessageDialog(null, \输入时间错误\ } catch (Exception e) {

JOptionPane.showMessageDialog(null, \请输入正确的时间\

- 7 -

}

} else { try{

fo = false;

RI.setEditable(true); SHI.setEditable(true); FEN.setEditable(true); MIAO.setEditable(true); queding.setText(\确定\ soumd1.stop();

}catch(Exception E) {

System.out.println(\关闭\ } } } }); }

public static void main(String agrs[]) {

clock s = new clock();

Thread t1 = new Thread(s); t1.start();

s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }

public void run() { while (true) {

Date now = new Date();

dangqian.setText(\当前时间: \ if (foo) {

if (h == 0||h - shizhong<0) { h += 24; r = r - 1; }

if (f == 0||f - fenzhong<0) { f += 60; h -= 1; }

if (m == 0||m - miaozhong<0) { m += 60; f -= 1; }

guanji.setText(\离闹铃时间: \日\ + \时\分\秒\ if(r

foo=false;

guanji.setText(\离闹铃时间:0日0时0分0秒\ }else if(r<=riqi&&h

foo=false;

guanji.setText(\离闹铃时间:0日0时0分0秒\ }else if(r<=riqi&&h<=shizhong&&f

foo=false;

guanji.setText(\离闹铃时间:0日0时0分0秒\

}else if(r<=riqi&&h<=shizhong&&f<=fenzhong&&m

- 8 -

{

foo=false;

guanji.setText(\离闹铃时间:0日0时0分0秒\ } }

if (fo) { foo = true;

RI.setEditable(false); SHI.setEditable(false); FEN.setEditable(false); MIAO.setEditable(false); queding.setText(\关闭\

SimpleDateFormat ri = new SimpleDateFormat(\ SimpleDateFormat shi = new SimpleDateFormat(\ SimpleDateFormat fen = new SimpleDateFormat(\ SimpleDateFormat miao = new SimpleDateFormat(\ riqi = Integer.parseInt(ri.format(now));

shizhong = Integer.parseInt(shi.format(now)); fenzhong = Integer.parseInt(fen.format(now)); miaozhong = Integer.parseInt(miao.format(now)); if (riqi == r && shizhong == h && fenzhong == f && miaozhong == m) { try {

soumd1 = Applet.newAudioClip(new File(music.getText())

.toURL()); 乐

soumd1.loop(); fo = false; foo = false;

} catch (MalformedURLException e) { e.printStackTrace(); } } } try {

Thread.sleep(1000);

} catch (InterruptedException ie) { } } } }

四、运行结果截图

- 9 -

// 播放音

打开文件添加音乐

闹钟设置完成

五、总结

本次JAVA课程设计是我和谢莉萍合作完成的,从网上下载了一个简单的小闹钟的开发程序,参照该程序代码,改编并添加一些自己的程序,在当前时间上加入了年月的显示,并在闹钟的时间设置上加入日的时间显示,最终实现小闹钟的运行.此小闹钟功能比较少,主要为能动态的显示当前时间,可设定或解除闹钟时间,并提供闹钟服务相应的文字提示功能,可以自己从本地文件中选择闹钟提示声音提示功能,并在闹钟设定的输入框中有简单的排错功能,比较简单.

该课程设计在修改运行过程中遇见很多问题,例如:添加日期时,显示一直不对,选择音乐时,音乐会出现播放不了的情况等等,但是,在两个人的努力下,经过修改,最终实现了小闹钟的运行.当然,由于是参照了别人的程序,依旧有好多程序语言不是很理解.

经过这次的课程设计,也有了很多收获,发现自己的整体面向对象的编程能力大大提高,虽然相对于以前的实验更复杂,不过加强了对GUI、线程等的程序的练习。由于这次课程设计安排的时间不是很足够,这个小闹钟软件比较简单,很多功能不是很完善,在很多功能上还需加强。虽然在设计的时候有遇到过很多困难和错误,但我觉得能够完成这次的课程设计,确实有了很大的进步与收获。

- 10 -


JAVA课程设计 - 闹钟的设计与实现 11计科本01班 张慧(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:中学生春季传染病预防知识

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: