用java设计节拍器_java定时执行方法节拍器
最近准备在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定时执行方法节拍器相关推荐
- java+timer+退出,java timer 兑现在指定时间执行方法
java timer 实现在指定时间执行方法 最近在弄一个定时发送的项目,需要定时执行方法,于是用到了Timer,但是我想要的功能网络上的资源比较少,所以自己研究了一下. 下面是我写的一些代码 imp ...
- Salesforce系列(十):Salesforce Schedule cron定时执行方法!
Salesforce系列(十):Salesforce Schedule cron定时执行方法! 前言 今天博主将为大家分享Salesforce系列(十):Salesforce Schedule cro ...
- java import自定义类_Java实现的自定义类加载器示例
本文实例讲述了Java实现的自定义类加载器.分享给大家供大家参考,具体如下: 一 点睛 1 ClassLoader类有如下两个关键方法: loadClass(String name, boolean ...
- java中装饰器_Java设计模式12:装饰器模式
装饰器模式 装饰器模式又称为包装(Wrapper)模式.装饰器模式以多客户端透明的方式扩展对象的功能,是继承关系的一个替代方案. 装饰器模式的结构 通常给对象添加功能,要么直接修改对象添加相应的功能, ...
- java get set写法_java get set方法的使用
Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念.下面是学习啦小编为您带来的java get set方法的使用,希望对大家有所帮助. jav ...
- NodeJS 使用redis实现定时执行方法
NodeJS 使用redis实现定时执行任务 文章目录 NodeJS 使用redis实现定时执行任务 场景 使用Redis定时器解决 Redis定时器 Redis发布订阅 操作 nodejs代码 主意 ...
- C# 定时执行方法
定时执行某个方法 private void button1_Click(object sender, EventArgs e){System.Timers.Timer timer = new Syst ...
- Windows下的自动定时执行方法 - 定时执行专家
[正文] 一.软件简介 <定时执行专家>是一款制作精良.功能全面.使用简单的专业定时执行工具软件.支持 18 种任务类型,11 种任务触发方式(包含 Cron方式),触发精度达到" ...
- Java 中array.size()_Java ArrayDeque size()方法与示例
ArrayDeque类size()方法size()方法在java.lang包中可用. size()方法用于返回存储在此双端队列中的大小(元素数). size()方法是一个非静态方法,只能通过类对象访问 ...
最新文章
- A Rectangular Barn
- 【剑指offer-Java版】04替换空格
- 关于for循环中的变量int i 如果跳出了这个for循环后,i的值是继续保留还是被释放掉了
- leetcode之回溯backtracing专题1
- 计算机图形学E4——OpenGL 区域种子填充
- 政府门户应该怎样建设?——解读中国政府网站绩效评估标准
- mysql sql option_MySQL 报错MySQL server syntax to use near 'OPTION SQL_SELECT_LIMIT=DEFAULT'
- Javaweb第三周作业
- monkey4444勒索病毒解密方法方案成功处理复旦安全实验室
- iphone查看html源码的app,使用扩展App在Safari上查看源代码
- 毕设-基于JavaWeb在线学习平台
- word 中的背景图片(浮动图形)怎么批量删除
- [Erlang]AC自动机过滤屏蔽词
- Python实现缺失数字的四种方法
- JSON是什么?对JSON的简单理解
- 计算机毕业设计JavaWeb美食网站设计(源码+系统+mysql数据库+lw文档)
- 使用ListIterator 对List遍历时修改,删除
- css中100vh 加减运算
- 数据结构算法之子集树
- T(n) = 25T(n/5)+n^2的时间复杂度