简易版小钢琴
package PianoGame;
import javax.swing.*;
import java.awt.*;
public class PianoGame extends JFrame {
Button button=null;
//定义两个参数,分别为宽,高
public static final int WIDTH=700;
public static final int HEIGHT=450;
JButton button1,button2,button3,button4,button5,button6,button7;
//无参构造器
public PianoGame(){
button=new Button();
this.setLayout(null);
this.addKeyListener(button);
//底色改为黑色
getContentPane().setBackground(Color.BLACK);
//设定窗口的宽高
this.setSize(WIDTH,HEIGHT);
//设定窗口是否可见
this.setVisible(true);
//设定窗口是否可以修改
this.setResizable(false);
//允许我们点x关闭进程
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//设置窗口标题
this.setTitle("钢琴");
//定义按钮
button1=new JButton(" ");
button2=new JButton(" ");
button3=new JButton(" ");
button4=new JButton(" ");
button5=new JButton(" ");
button6=new JButton(" ");
button7=new JButton(" ");
//设置按钮的大小和位置
button1.setBounds(0,0,100,390);
button2.setBounds(100,0,100,390);
button3.setBounds(200,0,100,390);
button4.setBounds(300,0,100,390);
button5.setBounds(400,0,100,390);
button6.setBounds(500,0,100,390);
button7.setBounds(600,0,100,390);
add(button1);
add(button2);
add(button3);
add(button4);
add(button5);
add(button6);
add(button7);
//修改按钮颜色为白色
button1.setBackground(Color.WHITE);
button2.setBackground(Color.WHITE);
button3.setBackground(Color.WHITE);
button4.setBackground(Color.WHITE);
button5.setBackground(Color.WHITE);
button6.setBackground(Color.WHITE);
button7.setBackground(Color.WHITE);
}
public static void main(String[] args) {
PianoGame pianogame = new PianoGame();
}
}
package PianoGame;
import javax.sound.sampled.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
public class Button implements KeyListener {
@Override
public void keyTyped(KeyEvent e) {
}
//当我们按下按键
@Override
public void keyPressed(KeyEvent e) {
//这样我们可以知道按键对应的数字Keycode
//比如
System.out.println(e.getKeyCode());
//获取值
if(e.getKeyCode()==65){
try {
Clip bgm= AudioSystem.getClip();
//填写音频对应的目录
String path="/music/1.wav";
InputStream is=this.getClass().getResourceAsStream(path);
BufferedInputStream buffer=new BufferedInputStream(is);
AudioInputStream ais=AudioSystem.getAudioInputStream(buffer);
bgm.open(ais);
bgm.start();
} catch (LineUnavailableException ex) {
throw new RuntimeException(ex);
} catch (UnsupportedAudioFileException ex) {
throw new RuntimeException(ex);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
if(e.getKeyCode()==83){
try {
Clip bgm= AudioSystem.getClip();
//填写音频对应的目录
String path="/music/2.wav";
InputStream is=this.getClass().getResourceAsStream(path);
BufferedInputStream buffer=new BufferedInputStream(is);
AudioInputStream ais=AudioSystem.getAudioInputStream(buffer);
bgm.open(ais);
bgm.start();
} catch (LineUnavailableException ex) {
throw new RuntimeException(ex);
} catch (UnsupportedAudioFileException ex) {
throw new RuntimeException(ex);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
if(e.getKeyCode()==68){
try {
Clip bgm= AudioSystem.getClip();
//填写音频对应的目录
String path="/music/3.wav";
InputStream is=this.getClass().getResourceAsStream(path);
BufferedInputStream buffer=new BufferedInputStream(is);
AudioInputStream ais=AudioSystem.getAudioInputStream(buffer);
bgm.open(ais);
bgm.start();
} catch (LineUnavailableException ex) {
throw new RuntimeException(ex);
} catch (UnsupportedAudioFileException ex) {
throw new RuntimeException(ex);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
if(e.getKeyCode()==70){
try {
Clip bgm= AudioSystem.getClip();
//填写音频对应的目录
String path="/music/4.wav";
InputStream is=this.getClass().getResourceAsStream(path);
BufferedInputStream buffer=new BufferedInputStream(is);
AudioInputStream ais=AudioSystem.getAudioInputStream(buffer);
bgm.open(ais);
bgm.start();
} catch (LineUnavailableException ex) {
throw new RuntimeException(ex);
} catch (UnsupportedAudioFileException ex) {
throw new RuntimeException(ex);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
if(e.getKeyCode()==71){
try {
Clip bgm= AudioSystem.getClip();
//填写音频对应的目录
String path="/music/5.wav";
InputStream is=this.getClass().getResourceAsStream(path);
BufferedInputStream buffer=new BufferedInputStream(is);
AudioInputStream ais=AudioSystem.getAudioInputStream(buffer);
bgm.open(ais);
bgm.start();
} catch (LineUnavailableException ex) {
throw new RuntimeException(ex);
} catch (UnsupportedAudioFileException ex) {
throw new RuntimeException(ex);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
if(e.getKeyCode()==72){
try {
Clip bgm= AudioSystem.getClip();
//填写音频对应的目录
String path="/music/6.wav";
InputStream is=this.getClass().getResourceAsStream(path);
BufferedInputStream buffer=new BufferedInputStream(is);
AudioInputStream ais=AudioSystem.getAudioInputStream(buffer);
bgm.open(ais);
bgm.start();
} catch (LineUnavailableException ex) {
throw new RuntimeException(ex);
} catch (UnsupportedAudioFileException ex) {
throw new RuntimeException(ex);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
if(e.getKeyCode()==74){
try {
Clip bgm= AudioSystem.getClip();
//填写音频对应的目录
String path="/music/7.wav";
InputStream is=this.getClass().getResourceAsStream(path);
BufferedInputStream buffer=new BufferedInputStream(is);
AudioInputStream ais=AudioSystem.getAudioInputStream(buffer);
bgm.open(ais);
bgm.start();
} catch (LineUnavailableException ex) {
throw new RuntimeException(ex);
} catch (UnsupportedAudioFileException ex) {
throw new RuntimeException(ex);
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
}
@Override
public void keyReleased(KeyEvent e) {
}
}
最后的运行结果如下,可以按A~J进行弹奏简谱