java编程闹钟1.doc_第1页
java编程闹钟1.doc_第2页
java编程闹钟1.doc_第3页
java编程闹钟1.doc_第4页
java编程闹钟1.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

编写时钟程序,要求画出时钟面板,时针,分针,秒针,可设定或解除闹钟时间,并提供闹钟服务相应的文字提示功能与声音提示功能。最佳答案 自己之前做过的一个:import java.awt.*;import java.awt.event.*;import java.util.*;import javax.swing.*;import javax.swing.Timer;public class Clock extends JFrame implements ActionListener public final int HEIGTH = 200, L0 = 50, T0 = 50,N=8; public final double RAD = Math.PI / 180.0; int x, y, old_X, old_Y, r, x0, y0, w, h, ang; int sdo, mdo, hdo, old_M, old_H, hh, mm, ss; int delay = 1000; Calendar now; String st, alarm, Items1, Items2,str; JButton jb; JComboBox jc1, jc2, jc3; JLabel jl1, jl2, jl3, jl4; JMenu jm1, jm2, jm3, jm4; JMenuBar jmb; JMenuItem jmi1, jmi2, jmi3, jmi4, jmi5, jmi6, jmi7, jmi8, jmi9,jmi10; JTextField jtf1, jtf2, time; JPanel jp1, jp2, jp3; Timer timer; TimeZone tz = TimeZone.getTimeZone(JST); Toolkit toolkit=Toolkit.getDefaultToolkit(); /* * * 方法说明:实现ActionListener类必须过载的方法 */ public static void main(String args) Clock cp = new Clock(); cp.setVisible(true); Clock() super(Java闹钟!); setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); setSize(550, 700); setVisible(true); Container contentPane = getContentPane(); jp2 = new JPanel(); jmb = new JMenuBar(); jm1 = new JMenu(背景颜色设置 , true); jmi1 = new JMenuItem(外圈颜色); jmi1.addActionListener(this); jmi1.setActionCommand(color1); jm1.add(jmi1); jmi2 = new JMenuItem(闹钟边线颜色); jmi2.addActionListener(this); jmi2.setActionCommand(color2); jm1.add(jmi2); jmi3=new JMenuItem(底盘颜色); jmi3.addActionListener(this); jmi3.setActionCommand(color3); jm1.add(jmi3); jmi4=new JMenuItem(系统时间背静颜色); jmi4.addActionListener(this); jmi4.setActionCommand(color4); jm1.add(jmi4); jmb.add(jm1); jm2 = new JMenu(指针颜色设置 , true); jmi5 = new JMenuItem(秒针颜色); jmi5.addActionListener(this); jmi5.setActionCommand(color5); jm2.add(jmi5); jmi6 = new JMenuItem(分针颜色); jmi6.addActionListener(this); jmi6.setActionCommand(color6); jm2.add(jmi6); jmi7 = new JMenuItem(时针颜色); jmi7.addActionListener(this); jmi7.setActionCommand(color7); jm2.add(jmi7); jmb.add(jm2); jm3 = new JMenu(闹铃声音设置 , true); jmi8 = new JMenuItem(响铃1); jmi8.addActionListener(this); jmi8.setActionCommand(ring1); jm3.add(jmi8); jmi9 = new JMenuItem(静音); jmi9.addActionListener(this); jmi9.setActionCommand(ring2); jm3.add(jmi9); jmb.add(jm3); jm4 = new JMenu(帮助 , true); jmi10=new JMenuItem(使用说明); jmi10.addActionListener(this); jmi10.setActionCommand(help); jm4.add(jmi10); jmb.add(jm4); jp2.add(jmb); contentPane.add(jp2, BorderLayout.NORTH); jp3 = new JPanel(); jl1 = new JLabel(闹铃时间); jl1.setFont(new Font(楷体_GB2312, Font.BOLD, 18); time = new JTextField(00:00, 5); alarm = time.getText(); jb = new JButton(修改闹铃时间); jb.addActionListener(this); jb.setActionCommand(CC); jp3.add(jl1); jp3.add(time); jp3.add(jb); contentPane.add(jp3, BorderLayout.SOUTH); ClockPanel clock = new ClockPanel(); contentPane.add(clock, BorderLayout.CENTER); / 窗体添加事件监听,监听秒表的触发 ActionListener taskPerformer = new ActionListener() public void actionPerformed(ActionEvent evt) repaint(); ; new Timer(delay, taskPerformer).start(); /* * * 方法说明:绘制图形 */ Color C1 = Color.lightGray;/ 外圈颜色 Color C2 = Color.black;/ 边线颜色 Color C3 = Color.magenta;/ 内盘颜色 Color C4 = Color.blue;/ 背景颜色 Color C5 = Color.yellow;/ 秒针颜色 Color C6 = Color.green;/ 分针颜色 Color C7 = Color.red;/时针颜色 public class ClockPanel extends JPanel public void paint(Graphics g) h = getSize().height - 200;/ 绘制圆形 g.setColor(C1); g.fillOval(L0 + 30, T0 + 30, h - 60, h - 60); g.setColor(C2); g.drawOval(L0 + 31, T0 + 31, h - 62, h - 62); g.setColor(C3); g.fillOval(L0 + 50, T0 + 50, h - 100, h - 100); g.setColor(C2); g.drawOval(L0 + 51, T0 + 51, h - 102, h - 102); r = h / 2 - 30; x0 = 30 + r - 5 + L0; y0 = 30 + r - 5 - T0; ang = 60; for (int i = 1; i = 12; i+) x = (int) (r - 10) * Math.cos(RAD * ang) + x0); y = (int) (r - 10) * Math.sin(RAD * ang) + y0); g.drawString( + i, x, h - y); ang -= 30; x0 = 30 + r + L0; y0 = 30 + r + T0; g.drawString(指针式时钟, 215, 200); / 获取时间 now = Calendar.getInstance(); hh = now.get(Calendar.HOUR_OF_DAY);/ 小时 mm = now.get(Calendar.MINUTE);/ 分钟 ss = now.get(Calendar.SECOND);/ 秒 g.setColor(C4); g.fillRect(5, 550, 150, 30);/ 填充的矩形 g.setColor(C6); if (hh 10) st = 0 + hh; else st = + hh; if (mm 10) st = st + :0 + mm; else st = st + : + mm; if(alarm.equals(st) if(toolkit!=null) toolkit.beep(); else if (ss 0) g.setColor(C3); else old_M = mdo; old_H = hdo; / 绘制秒针 g.setColor(C5); x = (int) (r - 26) * Math.cos(RAD * sdo) + x0); y = (int) (r - 26) * Math.sin(RAD * sdo) + y0) - 2 * T0; g.drawLine(x0, y0, x, (h - y); old_X = x; old_Y = y; / 擦除分针和时针 if (mdo != old_M) g.setColor(C3); old_M = mdo; if (hdo != old_H) g.setColor(C3); old_H = hdo; / 绘制分针 g.setColor(C6); x = (int) (r - 50) * Math.cos(RAD * mdo) + x0); y = (int) (r - 50) * Math.sin(RAD * mdo) + y0) - 2 * T0; g.drawLine(x0, y0, x, (h - y); / 绘制时针 g.setColor(C7); x = (int) (r - 90) * Math.cos(RAD * hdo) + x0); y = (int) (r - 90) * Math.sin(RAD * hdo) + y0) - 2 * T0; g.drawLine(x0, y0, x, (h - y); / end paint / 闹铃时间的判断及实现 / 闹铃声音的实现 public void actionPerformed(ActionEvent e) / JMenuItem m = (JMenuItem) e.getSource(); if (e.getActionCommand() = CC) int newHou, newMin; char c; String getTime = JOptionPane.showInputDialog(this, 请输入闹铃时间格式如:, 00:00); repaint(); /如果撤消设置时间,就什么打印null if(getTime=null) System.out.println(getTime);/ dispose(); judge: if (getTime != null) /打印输入的设置的时间 System.out.println(getTime); / 判断输入的是不是5位字符 if (getTime.length() != 5) JOptionPane.showMessageDialog(time, 格式错误n请按格式输入5位数字, Error, JOptionPane.ERROR_MESSAGE); repaint(); break judge; / 判断输入的是不是数字 for (int i = 0; i = 24 | newHou = 60 | newHou 0) JOptionPane.showMessageDialog(this, 格式错误n分钟应该是小于60的正数, Error, JOptionPane.ERROR_MESSAGE); repaint(); break judge; new SetTime(newHou, newMin); if (e.getActionCommand() = ring1) toolkit=Toolkit.getDefaultToolkit(); if(e.getActionCommand() = ring2) System.out.println(静音); toolkit=null; if (e.getActionCommand() = color1) String color; Color c; System.out.println(color1); color = JOptionPane.showInputDialog(this, 请输入喜欢的外圈颜色(0-255), 128); if (color = null) else if (Integer.parseInt(color) 255) JOptionPane.showInputDialog(this, 请输入喜欢的外圈颜色(0-255), 128); else c = new Color(Integer.parseInt(color); C1 = c; if(e.getActionCommand() = color2) String color; Color c; System.out.println(color2); color = JOptionPane.showInputDialog(this, 请输入喜欢的边线颜色(0-255), 128); if(color=null) elseif (Integer.parseInt(color) 255) JOptionPane.showInputDialog(this, 请输入喜欢的边线颜色(0-255), 128); else c = new Color(Integer.parseInt(color); C2 = c; if(e.getActionCommand() = color3) String color; Color c; System.out.println(color3); color = JOptionPane.showInputDialog(this, 请输入喜欢的内盘颜色(0-255), 128); if(color=null) elseif (Integer.parseInt(color) 255) JOptionPane.showInputDialog(this, 请输入喜欢的内盘颜色(0-255), 128); else c = new Color(Integer.parseInt(color); C3 = c; if(e.getActionCommand() = color4) String color; Color c; System.out.println(color4); color = JOptionPane.showInputDialog(this, 请输入喜欢的背景颜色(0-255), 128); if(color=null) elseif (Integer.parseInt(color) 255) JOptionPane.showInputDialog(this, 请输入喜欢的背景颜色(0-255), 128); else c = new Color(Integer.parseInt(color); C4 = c; if(e.getActionCommand() = color5) String color; Color c; System.out.println(color5); color = JOptionPane.showInputDialog(this, 请输入喜欢的秒针颜色(0-255), 128); if(color=null) elseif (Integer.parseInt(color) 255) JOptionPane.showInputDialog(this, 请输入喜欢的秒针颜色(0-255), 128); else c = new Color(Integer.parseInt(color); C5 = c; if(e.getActionCommand() = color6) String color; Color c; System.out.println(color6); color = JOptionPane.showInputDialog(this, 请输入喜欢的分针颜色(0-255), 128); if(color=null) elseif (Integer.parseInt(color) 255) JOptionPane.showInputDialog(this, 请输入喜欢的分针颜色(0-255), 128); else c = new Color(Integer.parseInt(color)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论