标签:
import javax.sound.midi.*; import java.io.*; import javax.swing.*; import java.awt.*; public class MiniMusicPlayer3 { static JFrame f = new JFrame("My First Music Video"); static MyDrawPanel ml; public static void main(String[] args) { MiniMusicPlayer3 mini = new MiniMusicPlayer3(); mini.go(); } public void setUpGui() { ml = new MyDrawPanel(); f.setContentPane(ml); f.setBounds(30,30,300,300); f.setVisible(true); } public void go() { setUpGui(); try { Sequencer sequencer = MidiSystem.getSequencer(); sequencer.open(); sequencer.addControllerEventListener(ml,new int[] {127}); Sequence seq = new Sequence(Sequence.PPQ,4); Track track = seq.createTrack(); int r = 0; for(int i = 0; i < 60;i+= 4) { r = (int) ((Math.random() * 50) + 1); track.add(makeEvent(144,1,r,100,i)); track.add(makeEvent(176,1,127,0,i)); track.add(makeEvent(128,1,r,100,i+2)); } sequencer.setSequence(seq); sequencer.start(); sequencer.setTempoInBPM(120); } catch (Exception ex) {ex.printStackTrace();} } public MidiEvent makeEvent(int comd,int chan,int one,int two,int tick) { MidiEvent event = null; try { ShortMessage a = new ShortMessage(); a.setMessage(comd,chan,one,two); event = new MidiEvent(a,tick); } catch(Exception e) {} return event; } class MyDrawPanel extends JPanel implements ControllerEventListener { boolean msg = false; public void controlChange(ShortMessage event) { msg = true; repaint(); } public void paintcomponent(Graphics g) { //应为paintComponent if (msg) { Graphics2D g2 = (Graphics2D) g; int r = (int) (Math.random() * 250); int gr = (int) (Math.random() * 250); int b = (int) (Math.random() * 250); g.setColor(new Color(r,gr,b)); int ht = (int) ((Math.random() * 120) + 10); int width = (int) ((Math.random() * 120) + 10); int x = (int) ((Math.random() * 40) + 10); int y = (int) ((Math.random() * 40) + 10); g.fillRect(x,y,ht,width); msg = false; } } } }
原正确代码来自《Head First Java(第二版)中文版》
标签:
原文地址:http://www.cnblogs.com/mutaohengheng/p/4294002.html