弹奏你最美丽的音符
今天我们来做的是电脑钢琴,包括最基本的8个白键和5个黑键,声音包会在附件中给出。
首先来看看我们的钢琴界面吧:
我们要实现的功能有:
当你鼠标移动到对应的按键时,就会发出对应的声音
当我们按数字键1-8时,也会弹吹对应白键的声音。
这就需要我们添加鼠标监听器和键盘监听器,鼠标监听器我们选择mouseEntered,键盘监听器我们选择keyPresse.
首先我们设置监听器:
public class MusicListener extends MouseAdapter implements KeyListener { private AudioClip audioclip; /** * 按键盘的事件 */ public void keyPressed(KeyEvent e) { try { //调用Applet里的方法获取文件 audioclip = Applet.newAudioClip(new URL( "file:///G:/JAVA/javastudy/video/white" + e.getKeyChar() + ".wav")); audioclip.play();//调用play方法播放 } catch (Exception e1) { } } /** * 鼠标进入事件 */ public void mouseEntered(MouseEvent e) { try { //调用Applet里的方法获取文件 audioclip = Applet.newAudioClip(new URL( "file:///G:/JAVA/javastudy/video/" + ((JButton) e.getSource()).getActionCommand() + ".wav")); audioclip.play();//调用play方法播放 } catch (Exception e1) { } } public void keyTyped(KeyEvent e) { } public void keyReleased(KeyEvent e) { } }
设置完成以后,我们开始写主界面:
public class Piano extends JFrame { public static void main(String[] args) { Piano p = new Piano(); p.initUI(); } // 实例化一个钢琴监听器对象 MusicListener ml = new MusicListener(); // 登陆界面 public void initUI() { this.setTitle("键盘钢琴");// 设置标题 this.setSize(600, 570);// 设置大小 this.setDefaultCloseOperation(3);// 设置关闭按钮 this.setResizable(false);// 设置不可调节大小 this.setLocationRelativeTo(null);// 设置居中 this.setbackground();// 设置背景为空 this.addKeyListener(ml);// 给窗体加上键盘监听器 this.setFocusable(true);// 设置焦点在窗体上 this.setVisible(true);// 设置窗体可见 JPanel jpsouth = jpsouth();// 调用方法得到南部窗体 this.add(jpsouth, BorderLayout.SOUTH);// 将南部窗体添加到面板 } /** * 设置背景图片 */ public void setbackground() { ImageIcon noteimage = new ImageIcon("images/piano/musicalnote.jpg");// 实例化一个图片对象 JLabel jlaimage = new JLabel(noteimage);// 实例化一个标签,并将背景图片添加到标签上 jlaimage.setBounds(0, 0, noteimage.getIconWidth(), noteimage.getIconHeight());// 设置标签的绝对位置,宽度和高度 this.getLayeredPane().add(jlaimage, new Integer(Integer.MIN_VALUE));// 将标签添加到底层面板上 JPanel contentPane = (JPanel) this.getContentPane();// 得到上层面板 contentPane.setOpaque(false);// 设置上层面板透明 } /** * 设置南部面板的方法 * * @return 南部面板 */ public JPanel jpsouth() { JPanel panel = new JPanel();// 实例化一个面板对象 panel.setLayout(new GridLayout(1, 13, 0, 0));// 设置面板的布局为网格布局 panel.setPreferredSize(new Dimension(0, 145));// 设置面板的高度 JButton[] jbu = new JButton[16];// 实例化按钮数组 int[] array = { 1, 11, 2, 12, 3, 4, 13, 5, 14, 6, 15, 7, 8 };// 定义整型数组存储按钮顺序 // 对白键进行循环 for (int i = 1; i < 9; i++) { jbu[i] = new JButton();// 实例化按钮对象 jbu[i].setActionCommand("white" + i);// 设置命令字符串 jbu[i].addMouseListener(ml);// 给按钮添加鼠标监听器 jbu[i].setBackground(Color.WHITE);// 设置按钮背景为白色 } // 对黑键进行循环 for (int i = 11; i < 16; i++) { jbu[i] = new JButton();// 实例化按钮对象 jbu[i].setActionCommand("black" + (i - 10));// 设置命令字符串 jbu[i].addMouseListener(ml);// 给按钮添加鼠标监听器 jbu[i].setBackground(Color.BLACK);// 设置按钮背景为黑色 } for (int i = 0; i < array.length; i++) { panel.add(jbu[array[i]]);// 将按钮添加到窗体上 } return panel;// 返回面板 } }
下面就用我们的钢琴来弹奏美妙的音符吧~~
相关推荐
java project.rarjava project.rarjava project.rarjava project.rarjava project.rarjava project.rar
【标题】"javaProject.zip" 是一个包含Java项目源代码的压缩文件,它通常用于存储开发者编写的Java应用程序或Web应用程序的所有相关文件。这个压缩包可能是为了方便分发、备份或者版本控制而创建的。 【描述】"java...
标题提及的"java project在tomcat下调试插件",实际上是指Eclipse中的一个名为"Sysdeo Tomcat Launcher"的插件,其版本为3.2.1,这个插件使得开发者可以直接在Eclipse中启动、停止和调试Tomcat服务器,而无需离开IDE...
Java_project1.zip 文件是一个包含Java编程语言实现的图书管理系统源代码的压缩包。这个系统通常用于图书馆或类似机构中,用于自动化管理图书的借阅、归还、查询等操作。在深入理解这个系统之前,我们需要了解Java...
本篇文章将深入探讨如何使用Java来导入并读取微软的Project文件,同时也提供了一套相关的代码示例。 首先,我们要知道微软的Project文件通常是以.mpp格式存储的,这些文件包含了项目的详细信息,如任务、资源、时间...
"Java project code5"可能是一个具体的Java应用程序或Web应用项目,其包含的文件和目录反映了项目的组织方式。让我们逐一解析这些关键元素。 1. **category.json**: `category.json` 文件很可能存储了项目的分类...
在Java开发领域,一个名为"Java project code1"的项目代码集提供了深入了解Java编程实践的机会。这个项目可能是一个完整的应用程序或服务,涵盖了从基础到高级的多种Java技术。在这个项目中,我们可以看到如何组织...
Java解析Project_mpp文件.docx
java线程分析java project例子,里面分析了sleep(),join(),yield()和wait以及notify等方法的使用以及需要注意的地方。
MPXJ(Microsoft Project eXtended Java Library)是一个开源Java库,专门设计用来与Microsoft Project文件进行交互。它支持Microsoft Project 2000到2019的所有版本,能够读取、修改和创建.mpp文件,使得开发者可以...
【JavaProject: java项目】 JavaProject是一个典型的Java开发项目,主要涵盖了Java编程语言的各种实践应用。这个项目的出现,旨在提供一个学习和理解Java技术的实战平台,帮助开发者提升技能,了解如何在实际环境中...
Java笔记第一个项目源代码_JavaProject0119
导出project源码.包含jacob所有jar包
当项目Js文件校验时间过长替换此文件,可大幅减少校验时间
Java及Java-project的知识点Java
【Java项目列表.zip_project】是一个压缩包,其中包含了一份名为"Java-project-list.pdf"的文件。这份文件很可能是关于在Java平台上精选的一些项目列表,旨在为学习者或开发者提供一个参考,了解Java平台上的各种...
Maven是Java世界中流行的项目管理和综合工具,它通过POM(Project Object Model)来管理项目的构建、报告和依赖关系。在“pom.xml”中,我们可以看到项目的依赖库,比如Spring、Hibernate等框架,这些框架简化了Web...
《Project Server 2003 Administrators Guide》,《ProjectServer2003Setup》,《Project Server 2003安装指南》,《Project Server 2003配置部署指南》
java生成project形式的xml、mpp 将xml形式的Project文件转成 mpp 走过的弯路 1.Project 直接导出 mpp文件,没有办法自定义列。 2.jacob 导出mpp文件 jawin.dll只支持32位。 3.Aspose-Tasks-Java不收费的版本只能导出...
本Java project实现了使用JDBC驱动连接mysql数据库,创建了DBConnection类(封装了连接和关闭数据库连接操作),实现了将查询记录封装到实体Bean中。_JDBCDemo.zip