最近准备在Android下写一个节拍器,因为不熟悉Android开发的一系列东西,所以想着先用Java写一个节拍器再说。好歹,能把算法弄明白。在节拍器这个定时执行程序中,有两个最重要的类:Timer和TimerTask。

在讲解节拍器算法之前,我们来看一个定时程序的简单例子:

import java.util.Timer;

import java.util.TimerTask;

public class Test {

//因为我们要在静态方法main中创建对象

//所以要声明为static,静态的

static class MyTimerTask extends TimerTask

{

@Override

public void run() {

System.out.println("定时程序运行中……");

}

}

public static void main(String[] args)

{

Timer timer=new Timer();

//public void schedule(TimerTask task, long delay, long period)

//在延时delay毫秒后重复的执行task,周期是period毫秒

timer.schedule(new MyTimerTask(), 0, 1000);

}

}

?

??? 我们可以看到控制台输出如下:

?

????

????

?

?

?? 要用Java实现节拍器,其实只比上边的代码稍微复杂一点点。其中最核心的代码是一下两段:

?

?

//"开始"按钮的单击事件

jButton1.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent evt) {

//pp记录的当前拍是当前小节的第几拍

pp=1;

//获取拍速,如60代表每分钟60拍

tempo=Float.parseFloat(jTextField1.getText());

//获取拍数,如4代表4拍为一小节

section=Integer.parseInt(jTextField2.getText());

Timer mytimer=new Timer();

//根据用户输入的拍速计算TimerTask的频率

float tempFloat=60/tempo*1000;

System.out.print(String.valueOf(tempFloat));

mytimer.schedule(new MyTimerTask(),0, (long)tempFloat);

}

});

?

class MyTimerTask extends TimerTask{

@Override

public void run() {

//让jLabel这个控件显示当前节拍数

jLabel3.setText(String.valueOf(pp));

if(pp!=section) //如果还没满一小节则将当前节拍数PP加1

pp++;

else //如果满了一小节

pp=1;

}

}

?

完整的.java文件附在附件中。

?

?

?

用java设计节拍器_java定时执行方法节拍器相关推荐

  1. java+timer+退出,java timer 兑现在指定时间执行方法

    java timer 实现在指定时间执行方法 最近在弄一个定时发送的项目,需要定时执行方法,于是用到了Timer,但是我想要的功能网络上的资源比较少,所以自己研究了一下. 下面是我写的一些代码 imp ...

  2. Salesforce系列(十):Salesforce Schedule cron定时执行方法!

    Salesforce系列(十):Salesforce Schedule cron定时执行方法! 前言 今天博主将为大家分享Salesforce系列(十):Salesforce Schedule cro ...

  3. java import自定义类_Java实现的自定义类加载器示例

    本文实例讲述了Java实现的自定义类加载器.分享给大家供大家参考,具体如下: 一 点睛 1 ClassLoader类有如下两个关键方法: loadClass(String name, boolean ...

  4. java中装饰器_Java设计模式12:装饰器模式

    装饰器模式 装饰器模式又称为包装(Wrapper)模式.装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰器模式的结构 通常给对象添加功能,要么直接修改对象添加相应的功能, ...

  5. java get set写法_java get set方法的使用

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念.下面是学习啦小编为您带来的java get set方法的使用,希望对大家有所帮助. jav ...

  6. NodeJS 使用redis实现定时执行方法

    NodeJS 使用redis实现定时执行任务 文章目录 NodeJS 使用redis实现定时执行任务 场景 使用Redis定时器解决 Redis定时器 Redis发布订阅 操作 nodejs代码 主意 ...

  7. C# 定时执行方法

    定时执行某个方法 private void button1_Click(object sender, EventArgs e){System.Timers.Timer timer = new Syst ...

  8. Windows下的自动定时执行方法 - 定时执行专家

    [正文] 一.软件简介 <定时执行专家>是一款制作精良.功能全面.使用简单的专业定时执行工具软件.支持 18 种任务类型,11 种任务触发方式(包含 Cron方式),触发精度达到" ...

  9. Java 中array.size()_Java ArrayDeque size()方法与示例

    ArrayDeque类size()方法size()方法在java.lang包中可用. size()方法用于返回存储在此双端队列中的大小(元素数). size()方法是一个非静态方法,只能通过类对象访问 ...

最新文章

  1. A Rectangular Barn
  2. 【剑指offer-Java版】04替换空格
  3. 关于for循环中的变量int i 如果跳出了这个for循环后,i的值是继续保留还是被释放掉了
  4. leetcode之回溯backtracing专题1
  5. 计算机图形学E4——OpenGL 区域种子填充
  6. 政府门户应该怎样建设?——解读中国政府网站绩效评估标准
  7. mysql sql option_MySQL 报错MySQL server syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT'
  8. Javaweb第三周作业
  9. monkey4444勒索病毒解密方法方案成功处理复旦安全实验室
  10. iphone查看html源码的app,使用扩展App在Safari上查看源代码
  11. 毕设-基于JavaWeb在线学习平台
  12. word 中的背景图片(浮动图形)怎么批量删除
  13. [Erlang]AC自动机过滤屏蔽词
  14. Python实现缺失数字的四种方法
  15. JSON是什么?对JSON的简单理解
  16. 计算机毕业设计JavaWeb美食网站设计(源码+系统+mysql数据库+lw文档)
  17. 使用ListIterator 对List遍历时修改,删除
  18. css中100vh 加减运算
  19. 数据结构算法之子集树
  20. T(n) = 25T(n/5)+n^2的时间复杂度

热门文章

  1. 欢聚时代财报背后:海外征途的持久战
  2. 【产品经理】产品体验报告的思路
  3. 使用JFileChooser打开文件
  4. 【20保研】国防科技大学计算机学院 2019年优秀大学生夏令营招生通知
  5. android 手写 流畅,安卓手写板,以及提高Android应用手写流畅度
  6. 计算机机房空调检查,大型计算机机房空调设计模拟研究
  7. 高会职称计算机课程,高会职称计算机《Frontpage 2000网页制作》全部开通
  8. abap开发alv篇
  9. 地图sev-clt文件详解
  10. Lifekeeper 安装的问题