Java编程实例模拟钢琴

上传人:公**** 文档编号:459254045 上传时间:2023-06-25 格式:DOC 页数:8 大小:49KB
返回 下载 相关 举报
Java编程实例模拟钢琴_第1页
第1页 / 共8页
Java编程实例模拟钢琴_第2页
第2页 / 共8页
Java编程实例模拟钢琴_第3页
第3页 / 共8页
Java编程实例模拟钢琴_第4页
第4页 / 共8页
Java编程实例模拟钢琴_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《Java编程实例模拟钢琴》由会员分享,可在线阅读,更多相关《Java编程实例模拟钢琴(8页珍藏版)》请在金锄头文库上搜索。

1、Java编程实例模拟钢琴本例知识点一句话讲解新学知识使用AudioClip类播放声音使用MouseEvent类处理鼠标事件已学知识使用Image类制作图片使用Frame类制作界面框架一、练习具体要求本练习制作模拟钢琴的实例。如图98-1所示,程序执行后,创建一个带有模拟钢琴键盘的面板,用户可以通过键盘或者鼠标来“敲击”钢琴键盘发出声音,也可以通过电脑键盘的组合键实现钢琴的高音。二、程序及注释(1)编程思路:首先,本练习因为要制作模拟钢琴的实例,所以首先要生成程序界面:先通过语句Image m_ImgUp生成键盘、鼠标松开时显示的键盘图片,再通过语句Image m_ImgDown生成键盘、鼠标按

2、下时显示的键盘图片,最后通过语句m_ImgUp=getImage(getDocumentBase(),img/up.gif)和语句m_ImgDown=getImage(getDocumentBase(),img/down.gif)加载图片,生成钢琴界面。然后,因为要实现模拟钢琴效果,所以要模拟声音的播放,首先通过语句AudioClip m_AudioClip=new AudioClip14生成一个音频对象的数组,保存七个中音和七个高音的声调,最后,通过函数public void keyPressed(KeyEvent e)来响应按下键盘的动作,实现声音的播放。(2)程序实现及注释:/Piano

3、.javaimport java.applet.*;import java.awt.*;import java.awt.event.*;public Piano extends Applet implements MouseListener,KeyListener,MouseMotionListener /变量声明 Image m_ImgUp;/键盘、鼠标松开时显示的键盘图片 Image m_ImgDown;/键盘、鼠标按下时显示的键盘图片 AudioClip m_AudioClip=new AudioClip14; int m_nState=new int14; int m_nOldDown

4、Count=-1; final int IMG_WIDTH=17; final int IMG_HEIGHT=85; final int STATE_UP=0; final int STATE_DOWN=1; /初始化小程序 public void init() for(int i=0;i14;i+) m_nStatei=0; m_ImgUp=getImage(getDocumentBase(),img/up.gif); m_ImgDown=getImage(getDocumentBase(),img/down.gif); MediaTracker mediaTracker=new Media

5、Tracker(this); mediaTracker.addImage(m_ImgUp,0); mediaTracker.addImage(m_ImgDown,1); try mediaTracker.waitForID(0); catch(Exception e) System.out.println(m_ImgUp is not loaded right); try mediaTracker.waitForID(1); catch(Exception e) System.out.println(m_ImgDown is not loaded right); for(int i=0;i14

6、;i+) String sUrl=new String(au/+i+.au); m_AudioClipi=getAudioClip(getCodeBase(),sUrl); addKeyListener(this); addMouseListener(this); addMouseMotionListener(this); /画屏函数 public void paint(Graphics g) for(int i=0;i14;i+) switch(m_nStatei) case STATE_UP: g.drawImage(m_ImgUp,i*IMG_WIDTH,0,this); break;

7、case STATE_DOWN: g.drawImage(m_ImgDown,i*IMG_WIDTH,0,this); break; /主函数 public static void main(String args) Frame frame=new Frame(); Piano piano=new Piano(); frame.add(piano); Dimension dimension=new Dimension(40,200); frame.setSize(dimension); frame.addWindowListener(new WindowAdapter() public voi

8、d windowClosing(WindowEvent e) System.exit(0); ); frame.setVisible(true); frame.repaint() ; void showSound(int nCount) m_AudioClipnCount.play(); /响应点击鼠标 public void mouseClicked(MouseEvent e) int nMouseCount=e.getClickCount(); /响应鼠标进入 public void mouseEntered(MouseEvent e) /响应鼠标退出 public void mouseE

9、xited(MouseEvent e) if(m_nOldDownCount!=-1)m_nStatem_nOldDownCount=STATE_UP; m_nOldDownCount=-1; /响应按下鼠标 public void mousePressed(MouseEvent e) int nX=e.getX(); int nY=e.getY(); int nCount=nX/IMG_WIDTH; m_nStatenCount=STATE_DOWN; showSound(nCount); m_nOldDownCount=nCount; Graphics g=getGraphics(); g

10、.drawImage(m_ImgDown,nCount*IMG_WIDTH,0,this); /响应松开鼠标 public void mouseReleased(MouseEvent e) int nX=e.getX(); int nY=e.getY(); int nCount=nX/IMG_WIDTH; m_nStatenCount=STATE_UP; m_nOldDownCount=-1; Graphics g=getGraphics(); g.drawImage(m_ImgUp,nCount*IMG_WIDTH,0,this); /响应按下键盘 public void keyPresse

11、d(KeyEvent e) int nKeyCode=e.getKeyCode(); String sKeyName=e.getKeyText(nKeyCode); boolean bControlDown=e.isControlDown(); int nCount=-1; switch(nKeyCode) case KeyEvent.VK_1: nCount=0; break; case KeyEvent.VK_2: nCount=1; break; case KeyEvent.VK_3: nCount=2; break; case KeyEvent.VK_4: nCount=3; break; case KeyEvent.VK_5: nCount=4; break; case KeyEvent.VK_6: nCount=5; break; c

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 机械/制造/汽车 > 汽车技术

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号