java大作业

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java大作业

课程名称:java大作业

设计题目:简单的节奏发声器

学院:计算机科学与信息工程学院学生姓名:

学生学号:

专业班级:

指导教师:

年月日

1.简介

程序的主要功能有:提供用户界面,可勾选每组乐器的不同节拍的复选框组成一定规律的节奏发声,且带有播放、暂停、加快/减慢节奏的功能。主要涉及java程序设计以下部分:

(1)GUI编程:利用GUI接口使用相应的功能组件和合理的布局方式完成程序的用户界面。

(2)组件的事件监听:为相应的功能组件注册事件,利用实现ActionListener接口的内部类完成对应事件的事件监听。

(3)JavaSound API:程序主要用到只有MIDI部分,利用核心部分的Sequencer、Sequence与Track对象的方法,完成程序的具体节奏发声。

2.程序源码

package en;

import java.awt.*;

import javax.swing.*;

import javax.sound.midi.*;

import java.util.*;

import java.awt.event.*;

/*这个程序主要用到时JavaSound API的midi即电子发声装置的一些标准*/ public class BeatBox {

private JPanel mainPanel;

/*用于储存复选框*/

private ArrayList checkbokList;

/*Sequencer用于控制Sequence对象。

* 它用于将所有的midi数据送到正确装置,相当与实际生活的发声装置,如CD播放器。

* 哎哎不是我们考虑的问题啦!*/

private Sequencer sequencer;

/*Sequence 是一种数据结构,包含可由Sequencer 对象回放的音乐信息。

* 类似于生活中CD*/

private Sequence sequence;

private Track track;

/*Track 占用Sequencer 演奏的数据层次中的一个中间层。

* sequencer 演奏sequence,它包含音轨,而音轨包含MIDI 事件。

* Sequencer 可能提供mute 或solo 具体音轨的控制。

* 类似于播放的歌曲本身,而track也类似歌曲它是由许多的音符(相对应数字)组成的。

*/

private JFrame theFrame;

/*各种乐器的名称*/

private String[] instrumentNames={"低音鼓","闭镲","开镲","原声","铙钹","拍子","高音鼓","高音圆鼓","沙球","口哨","低音手鼓","颈铃","颤音叉","中低嗵鼓","高音撞铃","高音手鼓"};

/*各种乐器所对应的编号*/

private int[] instruments={35,42,46,38,49,39,50,60,70,72,64,56,58,47,67,63};

public static void main(String[] args) {

new BeatBox().buildGUI();

}

public void buildGUI(){

theFrame=new JFrame("Cyber BeatBox");

/*frame.setDefaultCloseOperation()是设置用户在此窗体上发起"close" 时默认执行的操作。

* EXIT_ON_CLOSE:使用System exit 方法退出应用程序。*/

theFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

/*使用边界布局*/

BorderLayout layout=new BorderLayout();

JPanel background=new JPanel(layout);

/*设置边框属性距内部10像素*/

background.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); checkbokList=new ArrayList();

/*Box容器用于放置按钮,设置从上到下纵向布置组件*/

Box buttonBox=new Box(BoxLayout.Y_AXIS);

/*开始播放,添加开始播放的事件监听*/

JButton start=new JButton("开始");

start.addActionListener(new MyStartListener());

buttonBox.add(start);

/*结束播放*/

JButton stop=new JButton("结束");

stop.addActionListener(new MyStopListener());

buttonBox.add(stop);

/*加快节奏*/

JButton upTempo=new JButton("加快");

upTempo.addActionListener(new MyUpTempoListener()); buttonBox.add(upTempo);

/*减慢节奏*/

JButton downTempo=new JButton("减慢");

downTempo.addActionListener(new MyDownTempoListener()); buttonBox.add(downTempo);

/*Box容器用于放置乐器名,设置从上到下纵向布置组件*/

Box nameBox=new Box(BoxLayout.Y_AXIS);

for(int i=0;i<16;i++){

nameBox.add(new Label(instrumentNames[i]));

}

相关文档
最新文档