热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java编写闹钟_寻找java编程高手写一个闹钟的程序

展开全部自己之前做过的一个:importjava.awt.*;importjava.awt.event.*;importjava.util.*;importjavax

展开全部

自己之前做过的一个:

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类必e69da5e6ba903231313335323631343130323136353331333262343132须过载的方法

*/

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 &#61; 1; i <&#61; 12; i&#43;&#43;) {

x &#61; (int) ((r - 10) * Math.cos(RAD * ang) &#43; x0);

y &#61; (int) ((r - 10) * Math.sin(RAD * ang) &#43; y0);

g.drawString("" &#43; i, x, h - y);

ang -&#61; 30;

}

x0 &#61; 30 &#43; r &#43; L0;

y0 &#61; 30 &#43; r &#43; T0;

g.drawString("指针式时钟", 215, 200);

// 获取时间

now &#61; Calendar.getInstance();

hh &#61; now.get(Calendar.HOUR_OF_DAY);// 小时

mm &#61; now.get(Calendar.MINUTE);// 分钟

ss &#61; now.get(Calendar.SECOND);// 秒

g.setColor(C4);

g.fillRect(5, 550, 150, 30);// 填充的矩形

g.setColor(C6);

if (hh <10)

st &#61; "0" &#43; hh;

else

st &#61; "" &#43; hh;

if (mm <10)

st &#61; st &#43; ":0" &#43; mm;

else

st &#61; st &#43; ":" &#43; mm;

if(alarm.equals(st))

{

if(toolkit!&#61;null)

toolkit.beep();

else {}

}

if (ss <10)

st &#61; st &#43; ":0" &#43; ss;

else

st &#61; st &#43; ":" &#43; ss;

{

g.setFont(new Font("华文楷体", Font.BOLD, 16));

g.drawString("系统时间:" &#43; st, 10, 570);

}

// 计算时间和图形的关系

sdo &#61; 90 - ss * 6;

mdo &#61; 90 - mm * 6;

hdo &#61; 90 - hh * 30 - mm / 2;

// 擦除秒针

if (old_X > 0) {

g.setColor(C3);

} else {

old_M &#61; mdo;

old_H &#61; hdo;

}

// 绘制秒针

g.setColor(C5);

x &#61; (int) ((r - 26) * Math.cos(RAD * sdo) &#43; x0);

y &#61; (int) ((r - 26) * Math.sin(RAD * sdo) &#43; y0) - 2 * T0;

g.drawLine(x0, y0, x, (h - y));

old_X &#61; x;

old_Y &#61; y;

// 擦除分针和时针

if (mdo !&#61; old_M) {

g.setColor(C3);

old_M &#61; mdo;

}

if (hdo !&#61; old_H) {

g.setColor(C3);

old_H &#61; hdo;

}

// 绘制分针

g.setColor(C6);

x &#61; (int) ((r - 50) * Math.cos(RAD * mdo) &#43; x0);

y &#61; (int) ((r - 50) * Math.sin(RAD * mdo) &#43; y0) - 2 * T0;

g.drawLine(x0, y0, x, (h - y));

// 绘制时针

g.setColor(C7);

x &#61; (int) ((r - 90) * Math.cos(RAD * hdo) &#43; x0);

y &#61; (int) ((r - 90) * Math.sin(RAD * hdo) &#43; y0) - 2 * T0;

g.drawLine(x0, y0, x, (h - y));

} // end paint

}

// 闹铃时间的判断及实现

// 闹铃声音的实现

public void actionPerformed(ActionEvent e) {

// JMenuItem m &#61; (JMenuItem) e.getSource();

if (e.getActionCommand() &#61;&#61; "CC") {

int newHou, newMin;

char c;

String getTime &#61; JOptionPane.showInputDialog(this, "请输入闹铃时间格式如&#xff1a;", "00:00");

repaint();

//如果撤消设置时间&#xff0c;就什么打印null

if(getTime&#61;&#61;null)

System.out.println(getTime);

// dispose();

judge: if (getTime !&#61; null) {

//打印输入的设置的时间

System.out.println(getTime);

// 判断输入的是不是5位字符

if (getTime.length() !&#61; 5) {

JOptionPane.showMessageDialog(time, "格式错误\n请按格式输入5位数字", "Error",

JOptionPane.ERROR_MESSAGE);

repaint();

break judge;

}

// 判断输入的是不是数字

for (int i &#61; 0; i <(getTime.length()); i&#43;&#43;) {

c &#61; getTime.charAt(i);

if (i &#61;&#61; 2 && !Character.isDigit(c))

continue;

// 判断当前字符,如果不是数字则跳出该事件

if (i !&#61; 2 && !Character.isDigit(c)) {

JOptionPane.showMessageDialog(this, "格式错误\n请按格式输入5位数字",

"Error",JOptionPane.ERROR_MESSAGE);

repaint();

break judge;

}

}

char[] hour &#61; { getTime.charAt(0), getTime.charAt(1) };

char[] minute &#61; { getTime.charAt(3), getTime.charAt(4) };

newHou &#61; Integer.parseInt(String.valueOf(hour));

newMin &#61; Integer.parseInt(String.valueOf(minute));

if (newHou >&#61; 24 || newHou <0) {

JOptionPane.showMessageDialog(this, "格式错误\n小时应该是不小于0不大于23的正数",

"Error", JOptionPane.ERROR_MESSAGE);

repaint();

break judge;

}

if (newMin >&#61; 60 || newHou <0) {

JOptionPane.showMessageDialog(this, "格式错误\n分钟应该是小于60的正数", "Error",

JOptionPane.ERROR_MESSAGE);

repaint();

break judge;

}

new SetTime(newHou, newMin);

}

}

if (e.getActionCommand() &#61;&#61; "ring1") {

toolkit&#61;Toolkit.getDefaultToolkit();

}

if(e.getActionCommand() &#61;&#61; "ring2"){

System.out.println("静音");

toolkit&#61;null;

}

if (e.getActionCommand() &#61;&#61; "color1") {

String color;

Color c;

System.out.println("color1");

color &#61; JOptionPane.showInputDialog(this, "请输入喜欢的外圈颜色(0--255)", "128");

if (color &#61;&#61; null) {

} else {

if (Integer.parseInt(color) <0

|| Integer.parseInt(color) > 255)

JOptionPane.showInputDialog(this, "请输入喜欢的外圈颜色(0--255)", "128");

else {

c &#61; new Color(Integer.parseInt(color));

C1 &#61; c;

}

}

}

if(e.getActionCommand() &#61;&#61; "color2"){

String color;

Color c;

System.out.println("color2");

color &#61; JOptionPane.showInputDialog(this, "请输入喜欢的边线颜色(0--255)", "128");

if(color&#61;&#61;null){}

else{if (Integer.parseInt(color) <0|| Integer.parseInt(color) > 255)

JOptionPane.showInputDialog(this, "请输入喜欢的边线颜色(0--255)", "128");

else {

c &#61; new Color(Integer.parseInt(color));

C2 &#61; c;

}

}

}

if(e.getActionCommand() &#61;&#61; "color3"){

String color;

Color c;

System.out.println("color3");

color &#61; JOptionPane.showInputDialog(this, "请输入喜欢的内盘颜色(0--255)", "128");

if(color&#61;&#61;null){}

else{if (Integer.parseInt(color) <0|| Integer.parseInt(color) > 255)

JOptionPane.showInputDialog(this, "请输入喜欢的内盘颜色(0--255)", "128");

else {

c &#61; new Color(Integer.parseInt(color));

C3 &#61; c;

}

}

}

if(e.getActionCommand() &#61;&#61; "color4"){

String color;

Color c;

System.out.println("color4");

color &#61; JOptionPane.showInputDialog(this, "请输入喜欢的背景颜色(0--255)", "128");

if(color&#61;&#61;null){}

else{if (Integer.parseInt(color) <0|| Integer.parseInt(color) > 255)

JOptionPane.showInputDialog(this, "请输入喜欢的背景颜色(0--255)", "128");

else {

c &#61; new Color(Integer.parseInt(color));

C4 &#61; c;

}

}

}

if(e.getActionCommand() &#61;&#61; "color5"){

String color;

Color c;

System.out.println("color5");

color &#61; JOptionPane.showInputDialog(this, "请输入喜欢的秒针颜色(0--255)", "128");

if(color&#61;&#61;null){}

else{if (Integer.parseInt(color) <0|| Integer.parseInt(color) > 255)

JOptionPane.showInputDialog(this, "请输入喜欢的秒针颜色(0--255)", "128");

else {

c &#61; new Color(Integer.parseInt(color));

C5 &#61; c;

}

}

}

if(e.getActionCommand() &#61;&#61; "color6"){

String color;

Color c;

System.out.println("color6");

color &#61; JOptionPane.showInputDialog(this, "请输入喜欢的分针颜色(0--255)", "128");

if(color&#61;&#61;null){}

else{if (Integer.parseInt(color) <0|| Integer.parseInt(color) > 255)

JOptionPane.showInputDialog(this, "请输入喜欢的分针颜色(0--255)", "128");

else {

c &#61; new Color(Integer.parseInt(color));

C6 &#61; c;

}

}

}

if(e.getActionCommand() &#61;&#61; "color7"){

String color;

Color c;

System.out.println("color7");

color &#61; JOptionPane.showInputDialog(this, "请输入喜欢的时针颜色(0--255)", "128");

if(color&#61;&#61;null){}

else{if (Integer.parseInt(color) <0|| Integer.parseInt(color) > 255)

JOptionPane.showInputDialog(this, "请输入喜欢的时针颜色(0--255)", "128");

else {

c &#61; new Color(Integer.parseInt(color));

C7 &#61; c;

}

}

}

if(e.getActionCommand() &#61;&#61; "help"){

String help;

help &#61; JOptionPane.showInputDialog(this, "输入quit退出该闹钟的使用", "这是运行在Java中的指针式时钟");

if(help.equals("quit"))

dispose();

else {}

// timer.restart();

}

}

class SetTime {

String Hour;

String Minute;

public SetTime() { }

public SetTime(int hour, int minute) {

// 当时间参数小于10的时候在前面添加字符0

if (hour <10) {

Hour &#61; "0" &#43; String.valueOf(hour);

} else {

Hour &#61; "" &#43; String.valueOf(hour);

}

if (minute <10) {

Minute &#61; "0" &#43; String.valueOf(minute);

} else {

Minute &#61; "" &#43; String.valueOf(minute);

}

alarm &#61; Hour &#43; ":" &#43; Minute;

time.setText(alarm);

repaint();

}

}

}

2Q&#61;&#61;

已赞过

已踩过<

你对这个回答的评价是&#xff1f;

评论

收起



推荐阅读
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 展开全部下面的代码是创建一个立方体Thisexamplescreatesanddisplaysasimplebox.#Thefirstlineloadstheinit_disp ... [详细]
  • 有没有一种方法可以在不继承UIAlertController的子类或不涉及UIAlertActions的情况下 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • Go GUIlxn/walk 学习3.菜单栏和工具栏的具体实现
    本文介绍了使用Go语言的GUI库lxn/walk实现菜单栏和工具栏的具体方法,包括消息窗口的产生、文件放置动作响应和提示框的应用。部分代码来自上一篇博客和lxn/walk官方示例。文章提供了学习GUI开发的实际案例和代码示例。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • C#多线程解决界面卡死问题的完美解决方案
    当界面需要在程序运行中不断更新数据时,使用多线程可以解决界面卡死的问题。一个主线程创建界面,使用一个子线程执行程序并更新主界面,可以避免卡死现象。本文分享了一个例子,供大家参考。 ... [详细]
  • python中安装并使用redis相关的知识
    本文介绍了在python中安装并使用redis的相关知识,包括redis的数据缓存系统和支持的数据类型,以及在pycharm中安装redis模块和常用的字符串操作。 ... [详细]
  • Java图形化计算器设计与实现
    本文介绍了使用Java编程语言设计和实现图形化计算器的方法。通过使用swing包和awt包中的组件,作者创建了一个具有按钮监听器和自定义界面尺寸和布局的计算器。文章还分享了在图形化界面设计中的一些心得体会。 ... [详细]
author-avatar
耿睿---疯子
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有