弹奏你最美丽的音符
今天我们来做的是电脑钢琴,包括最基本的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;// 返回面板 } }
下面就用我们的钢琴来弹奏美妙的音符吧~~
相关推荐
【标题】"javaproject"指的是一个基于Java编程语言的项目。这可能是一个软件开发项目,涵盖了一系列的Java源代码文件、配置文件和其他相关资源,用于实现特定的功能或服务。 【描述】描述中提到“暂时存储一下这个...
- 首先,在Myeclipse或Eclipse中打开你的JavaProject工程。 - 在工程中创建一个新的目录,命名为`src/main/java`,这是Maven或者现代Java开发的标准结构,用于存放Java源代码。 - 创建另一个目录`src/main/webapp...
在这个项目中,"java project user jdbc"很可能是实现了一个用户管理的系统,利用Java Database Connectivity (JDBC) API来与数据库进行交互。下面我们将详细探讨这个项目可能涉及的关键知识点。 1. JDBC基础:JDBC...
project java
Java_project1.zip 文件是一个包含Java编程语言实现的图书管理系统源代码的压缩包。这个系统通常用于图书馆或类似机构中,用于自动化管理图书的借阅、归还、查询等操作。在深入理解这个系统之前,我们需要了解Java...
【标题】"JAVA-project-E-Banking.rar" 是一个基于Java技术开发的电子银行项目,而“_java_java project_project”这部分可能表示这个压缩包包含了Java编程语言相关的项目文件。这通常是一个学生或开发者用于学习、...
本资源里面包含了在java project工程下如何使用log4j,在java web工程(servlet和struts2)下如何使用log4j,并且对log4j的加载机制,原理进行了详细的介绍和解释,代码部分也进行了详细的注释,值得你看看。
JavaProject.jar
在本项目"JavaProject1.zip"中,我们很可能面对的是一个完整的Java开发项目。这个压缩包可能包含了源代码、配置文件、资源文件等构成Java应用的所有要素。让我们深入探讨一下这个项目可能涉及的关键知识点。 1. **...
通过以上步骤,你就能在MyEclipse的Java Project中成功导入并使用jar环境了。这个过程对于开发者来说至关重要,因为许多功能的实现都依赖于第三方库。熟练掌握这个操作,能帮助你更高效地开发Java应用。
涉及到一个JAVA项目的运行。通过某种方式获得一个JAVA的SDK,...这是一个Java Project项目,那么久需要将他打包成为一个可执行文件,这样才能被被广泛使用在服务器上。因为不可能为每一个服务器都安装Eclipse,然后运行
在这个项目中,我们关注的是它的Java版本,即"Nachos-java",以及其中的"project1"实验。这个压缩包提供了完整的NACHOS操作系统代码,对于学习操作系统原理和实践操作系统的开发具有极高的价值。 NACHOS设计的目标...
MPXJ(Microsoft Project eXtended Java Library)是一个开源Java库,专门设计用来与Microsoft Project文件进行交互。它支持Microsoft Project 2000到2019的所有版本,能够读取、修改和创建.mpp文件,使得开发者可以...
mybatis单元测试,example的17个方法测试,每个方法都有对应的参数和对应的返回值,外加模糊并分页查询,此外还有每个方法的测试环境
【标题】"java-mba-project.rar_java_project" 暗示这是一个基于Java的MBA级别的项目,可能涉及企业管理软件的开发。在这个项目中,开发者使用Java编程语言来构建银行相关的软件系统。 【描述】"bank software ...
在了解具体的转换方法之前,我们需要先了解Java Project与Dynamic Web Project之间的区别: 1. **Java Project**: - 主要用于Java应用程序的开发。 - 默认情况下不具备Web开发的相关配置,如Web服务器的集成等。...
在MyEclipse中进行Java项目开发时,连接SQL Server数据库是一项基本操作,这对于构建数据驱动的应用程序至关...通过对这个源码的分析和实践,你将更好地理解如何在MyEclipse中使用Java Project连接SQL Server数据库。
当项目Js文件校验时间过长替换此文件,可大幅减少校验时间
Project5.java