当前位置:文档之家› Java应用 简易闹钟设计

Java应用 简易闹钟设计

Java应用简易闹钟设计一、项目概述应用Java程序设计语言,主要是使用Swing组件、事件处理器、线程控制等实现对简易闹钟的开发设计,设计过程中要求闹钟能够显示当前时间,并且能够设定闹钟的个性铃声,当设定了闹钟时间后,待到设置时间时能够自动播放音乐。

关键词:Java 面向对象闹钟铃声设置1.1 问题和要求如何应用Java语言实现对闹钟的简易设计,要求设计实现的闹钟能够显示当前的时间,能够设置个性闹铃,并且可以预先设定闹钟时间,待到设置时间时能够自动播放音乐。

二、设计与开发2.1 问题分析1)如何实现闹钟外观的简易设计;2)如何能够获取当前时间并显示出来;3)如何查阅文件夹选择音乐文件来实现个性闹铃的设置;4)如何实现闹钟时间的设定,使闹钟能够在指定时间闹铃。

2.2 程序设计1)运用Swing组件实现对闹钟的外观设计。

主要应用到标签(JLable)、文本域(JTextField)、按钮(JButton)等,采用网格式布局,由网格布局管理器(GridLayout)来实现。

2)创建线程来获取当前时间,主要通过Runnable接口,使用run()方法来实现当前时间的显示。

3)要使按“选择闹铃音乐”按钮时能够触发对音乐文件的选择,则对按钮添加监听器并采用实例化文件选择器。

4)为了能在输入定点时间后实现对闹钟时间的设定,则需要对“确定”按钮添加监听器。

2.3 代码实现import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.applet.Applet;import java.applet.AudioClip;import java.io.File;import .*;import java.text.SimpleDateFormat;import java.util.Date;public class AlarmClock extends JFrame implements Runnable { JLabel dangqian;JButton queding, xuanze;JTextField music,RI, SHI, FEN, MIAO;int h=0,f=0,m=0,r=0;boolean fo=false;public AudioClip soumd1;public AlarmClock() {Container c = getContentPane();c.setLayout(new GridLayout(3, 1));JPanel jp = new JPanel();dangqian = new JLabel();jp.add(dangqian);c.add(jp);JPanel jp1 = new JPanel();music = new JTextField(20);xuanze = new JButton("选择闹铃音乐");jp1.add(music);jp1.add(xuanze);c.add(jp1);RI = new JTextField(4);SHI = new JTextField(4);FEN = new JTextField(4);MIAO = new JTextField(4);JPanel jp2 = new JPanel();jp2.add(new JLabel("日"));jp2.add(RI);jp2.add(new JLabel("时"));jp2.add(SHI);jp2.add(new JLabel("分"));jp2.add(FEN);jp2.add(new JLabel("秒"));jp2.add(MIAO);queding = new JButton("确定");jp2.add(queding);c.add(jp2);setSize(420, 150);setVisible(true);xuanze.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { JFileChooser fileChooser = new JFileChooser();fileChooser.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTOR IES);fileChooser.setCurrentDirectory(new File("."));if (fileChooser.showOpenDialog(AlarmClock.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{r=Integer.parseInt(RI.getText());h=Integer.parseInt(SHI.getText());f=Integer.parseInt(FEN.getText());m=Integer.parseInt(MIAO.getText());if(1<=r&&r<=31&&0<=h&&h<=23&&0<=f&&f<=59&&0<=m&&m<=59){fo=true;}elseJOptionPane.showMessageDialog(null, "输入时间错误");}catch(Exception e){JOptionPane.showMessageDialog(null, "请输入正确的时间");}}else{fo=false;RI.setEditable(true);SHI.setEditable(true);FEN.setEditable(true);MIAO.setEditable(true);queding.setText("确定");soumd1.stop();}}});}public static void main(String agrs[]) {AlarmClock s = new AlarmClock();Thread t1 = new Thread(s);t1.start();s.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}public void run() {while (true) {Date now = new Date();dangqian.setText("当前时间: " + now.toString());if(fo){RI.setEditable(false);SHI.setEditable(false);FEN.setEditable(false);MIAO.setEditable(false);queding.setText("关闭");SimpleDateFormat ri=new SimpleDateFormat("dd");SimpleDateFormat shi=new SimpleDateFormat("kk");SimpleDateFormat fen=new SimpleDateFormat("mm");SimpleDateFormat miao=new SimpleDateFormat("ss");int riqi=Integer.parseInt(ri.format(now));int shizhong=Integer.parseInt(shi.format(now));int fenzhong=Integer.parseInt(fen.format(now));int miaozhong=Integer.parseInt(miao.format(now));if(riqi==r&&shizhong==h&&fenzhong==f&&miaozhong==m){try {soumd1=Applet.newAudioClip(newFile(music.getText()).toURL());soumd1.loop();fo=false;} catch (MalformedURLException e) {e.printStackTrace();}}}try {Thread.sleep(1000);} catch (InterruptedException ie) {}}}}三、作品展示3.1 图片展示3.2 总结通过对闹钟的设计,进一步了解了Java语言的编写方法,包括对象类的封装、数据类型的引用、图形化用户界面的实现等等。

在设计实现过程中,主要应用到了Swing组件,通过多次应用,清楚地知道了各组件的功能,并能合理地布局,有效地实现图形化用户界面。

实际设计分析过程中难免遇到不少问题,但通过对问题的分析、思考和解决,反而让我加深了对知识点的印象,获得了更多的收益。

虽然只是一个小小时钟的设计,却也没那么简单,每个功能的实现都有一定的技术。

四、参考文献[1] 郎波. Java语言程序设计(第二版). 清华大学出版社, 2010.。

相关主题