亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? pianao.java

?? 幾個(gè)java代碼
?? JAVA
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
//RIGHTS RESERVE WANG ZHEN GANG 2003 6 16
//在226行實(shí)現(xiàn)多線(xiàn)程


import java.awt.*;
import java.awt.event.*;
import javax.swing.*;//實(shí)現(xiàn)了Swing GUI組件,例如: JButton(JRadioButton),JSlider等

import javax.swing.border.*;
import javax.swing.table.*;
import javax.swing.event.*;
import javax.sound.midi.*;
import java.util.Vector;
import java.net.*; //引入InetAddress類(lèi)所在的包,從而實(shí)現(xiàn)了網(wǎng)絡(luò)編程


import java.io.File;//實(shí)現(xiàn)了文件I/O


import java.io.IOException;//


public class PIANAO extends JPanel implements KeyListener {

    final int PROGRAM = 192;
    final int NOTEON = 144;
    final int NOTEOFF = 128;
    final int SUSTAIN = 64;
    final int REVERB = 91;
    final int ON = 0, OFF = 1;
    final Color jfcBlue = new Color(204, 204, 255);
    final Color pink = new Color(255, 175, 175);
    String keycodes[]={"F2","F4","F7","F9","F11","1","3","6","8","0","Backspace","Home","W","R","Y","O","[","Delete","Page Down","S","G","J",";","Enter","Z","V","N",".","Ctrl","Left","F1","F3","F5","F6","F8","Right","F12","Up","2","4","5","7","9","Minus","=","Insert","Page Up","Q","E","T","U","I", "P","]", "\\", "End", "A","D","F","H","K","L","Quote","Shift","X","C","B","M",",","/","Space","Down"};
    
    Sequencer sequencer;
    Sequence sequence;
    Synthesizer synthesizer;
    Instrument instruments[];
    ChannelData channels[];
    ChannelData cc;    
    JCheckBox mouseOverCB = new JCheckBox("鼠標(biāo)移動(dòng)發(fā)聲", true);
    JRadioButton multiCBmouse = new JRadioButton("鼠標(biāo)", true);
    JRadioButton multiCBkey = new JRadioButton("鍵盤(pán)彈奏", true);
    JRadioButton multiCBn = new JRadioButton("不組播", true);
    JRadioButton multiCB = new JRadioButton("我要組播", false);
    JRadioButton multiCB1 = new JRadioButton("接受組播", false);
    JSlider veloS, presS, bendS, revbS;
    JCheckBox soloCB, monoCB, muteCB, sustCB; 
    Vector keys = new Vector();
    Vector whiteKeys = new Vector();
    JTable table;
    Piano piano;
    boolean record;
    Track track;
    long startTime;
    
    Controls controls;
    Key prevKey;
    InstrumentsTable Table;

    MulticastSocket ms;
    InetAddress ia;
    int port=4000;
    byte []data=new byte[3];
    int program1;

    public PIANAO() {
        setLayout(new BorderLayout());

        JPanel p = new JPanel();
        p.setLayout(new BoxLayout(p,BoxLayout.Y_AXIS ));
        EmptyBorder eb = new EmptyBorder(10,20,30,40);
        BevelBorder bb = new BevelBorder(BevelBorder.RAISED,new Color(0,0,255),new Color(0,0,255));
        CompoundBorder cb = new CompoundBorder(eb,bb);
        p.setBorder(new CompoundBorder(cb,eb));
        JPanel pp = new JPanel(new BorderLayout());
        pp.setBorder(new EmptyBorder(10,20,30,40));
        pp.add(piano = new Piano(this));
        p.add(pp);
        p.add(controls = new Controls(this));
        p.add(Table= new InstrumentsTable(this));
        initmulticast();
        multiCBkey.addKeyListener(this);
        
        add(p);
        
        
        
        
        addKeyListener(this);
        
        
        
    }

    public void keyPressed(KeyEvent e) //實(shí)現(xiàn)鍵盤(pán)按下
    { 
            int code=e.getKeyCode();
            String codestr=e.getKeyText(code);
            prevKey=getKeyByKeycode( codestr);
            if (prevKey != null) {
                int keyi=prevKey.on();
                repaint();
                
                if(multiCB.isSelected()) 
                     send(keyi,ON,program1);
            }
        }
                
        public void keyReleased(KeyEvent e) //實(shí)現(xiàn)鍵盤(pán)松開(kāi)
        { 
            int code=e.getKeyCode();
            String codestr=e.getKeyText(code);
            prevKey=getKeyByKeycode( codestr);
         
             
            if ( prevKey!= null) {
                int keyi=prevKey.off();
                repaint();
                if(multiCB.isSelected()) 
                      send(keyi,OFF,program1);
                
            }
        }

       public void keyTyped(KeyEvent e){}
       
       public Key  getKeyByKeycode(String codestr) {
            for (int i = 0; i < keycodes.length; i++) {
                if (keycodes[i].equals(codestr)==true) {
                    return (Key) keys.get(i);
                }
            }
            return null;
        }

    public boolean isFocusTraversable ()
    {
              return true;
   }
    public void open() {
        try {
            if (synthesizer == null) {
                if ((synthesizer = MidiSystem.getSynthesizer()) == null) {
                    System.out.println("getSynthesizer() failed!");
                    return;
                }
            } 
            synthesizer.open();
            sequencer = MidiSystem.getSequencer();
            sequence = new Sequence(Sequence.PPQ, 10);
        } catch (Exception ex) { ex.printStackTrace(); return; }

        Soundbank sb = synthesizer.getDefaultSoundbank();
	if ( sb!= null) {
            instruments = synthesizer.getDefaultSoundbank().getInstruments();
            synthesizer.loadInstrument(instruments[0]);
        }
        MidiChannel midiChannels[] = synthesizer.getChannels();
        channels = new ChannelData[midiChannels.length];
        for (int i = 0; i < channels.length; i++) {
            channels[i] = new ChannelData(midiChannels[i], i);
        }
        cc = channels[0];

        ListSelectionModel lsm = table.getSelectionModel();
        lsm.setSelectionInterval(0,0);
        lsm = table.getColumnModel().getSelectionModel();
        lsm.setSelectionInterval(0,0);
    }


    public void close() {
        if (synthesizer != null) {
            synthesizer.close();
        }
        if (sequencer != null) {
            sequencer.close();
        }
        sequencer = null;
        synthesizer = null;
        instruments = null;
        channels = null;
    }

private void initmulticast(){
          try{
               ms=new MulticastSocket(port);
               ia=InetAddress.getByName("224.0.1.20");
               ms.joinGroup(ia);
               Receiver rthread=new Receiver();
               Thread t=new Thread(rthread);
               t.start();
             }catch(IOException e){System.err.println(e);}
}
                
   private void programChange(int program) {
            if (instruments != null) {
                synthesizer.loadInstrument(instruments[program]);
            }
            cc.channel.programChange(program);
            program1=program;

        }       



    public void createShortEvent(int type, int num) {
        ShortMessage message = new ShortMessage();
        try {
            long millis = System.currentTimeMillis() - startTime;
            long tick = millis * sequence.getResolution() / 500;
            message.setMessage(type+cc.num, num, cc.velocity); 
            MidiEvent event = new MidiEvent(message, tick);
            track.add(event);
        } catch (Exception ex) { ex.printStackTrace(); }
    }


     private void send(int keyi,int state,int program){
              
                data[1] =(byte)keyi;
                data[0]=(byte)state;
                data[2]=(byte)program;
                try{ 
                     DatagramPacket dp=new DatagramPacket(data,data.length,ia,port);
                     ms.send(dp);
                }catch(IOException ee){System.err.println(ee);}
        }



     class Receiver implements Runnable  //在用戶(hù)自己的類(lèi)中實(shí)現(xiàn)Runnable接口,從而實(shí)現(xiàn)多線(xiàn)程的應(yīng)用
     {
              private byte data[]=new byte[3];
              
              public Receiver(){
                       
                       
              }
              public void run(){
                        while(true){
                                    if( multiCB1.isSelected()) {
                                    try{
                                       DatagramPacket dp=new DatagramPacket(data,data.length);
                                       ms.receive(dp);
                                       
                                       
                                       }
                                       catch(IOException e){System.err.println(e);}
                                       programChange((int)data[2]);
                                     if(data[0]==ON) 
                                               ((Key) keys.get((int)data[1])).on();
                                     else            
                                               ((Key) keys.get((int)data[1])).off();
                                    }
                                }
             }
           }   
                                    
                              



       class Key extends Rectangle {
        int noteState = OFF;
        int kNum;
        public Key(int x, int y, int width, int height, int num) {
            super(x, y, width, height);
            kNum = num;
        }
        public boolean isNoteOn() {
            return noteState == ON;
        }
        public int on() {
            setNoteState(ON);
            cc.channel.noteOn(kNum, cc.velocity);
            return kNum-24;
            
        }

        public int off() {
            setNoteState(OFF);
            cc.channel.noteOff(kNum, cc.velocity);
            return kNum-24;

        }

        public void setNoteState(int state) {
            noteState = state;
        }
    } 




    class Piano extends JPanel implements MouseListener{

        Vector blackKeys = new Vector();
        Key prevKey;
        final int kw = 19, kh = 200;
        PIANAO env;         


        public Piano(PIANAO env) {
            setLayout(new BorderLayout());
            setPreferredSize(new Dimension(42*kw, kh+1));
            int transpose = 24;  
            int whiteIDs[] = { 0, 2, 4, 5, 7, 9, 11 }; 
                     
            for (int i = 0, x = 0; i < 6; i++) {
                for (int j = 0; j < 7; j++, x += kw) {
                    int keyNum = i * 12 + whiteIDs[j] + transpose;
                    whiteKeys.add(new Key(x, 0, kw, kh, keyNum));
                }
            }
            for (int i = 0, x = 0; i < 6; i++, x += kw) {
                int keyNum = i * 12 + transpose;
                blackKeys.add(new Key((x += kw)-4, 0, kw/2, kh/2, keyNum+1));
                blackKeys.add(new Key((x += kw)-4, 0, kw/2, kh/2, keyNum+3));
                x += kw;
                blackKeys.add(new Key((x += kw)-4, 0, kw/2, kh/2, keyNum+6));
                blackKeys.add(new Key((x += kw)-4, 0, kw/2, kh/2, keyNum+8));
                blackKeys.add(new Key((x += kw)-4, 0, kw/2, kh/2, keyNum+10));
            }
            keys.addAll(blackKeys);
            keys.addAll(whiteKeys);
            setCursor(new Cursor(Cursor.HAND_CURSOR));
            setBackground(new Color(160,100,160)); 
            

            addMouseMotionListener(new MouseMotionAdapter() {
                public void mouseMoved(MouseEvent e) {
                    if (mouseOverCB.isSelected()) {
                        Key key = getKey(e.getPoint());
                        if (prevKey != null && prevKey != key) {
                            int keyi=prevKey.off();
                           if( multiCB.isSelected()) 
                                send(keyi,OFF,program1);
                        } 
                        if (key != null && prevKey != key) {
                           int keyi= key.on();
                           if( multiCB.isSelected()) 
                               send(keyi,ON,program1);
                        }
                        prevKey = key;
                        repaint();
                    }
                }
            });
            this.env=env;
            addKeyListener(env);
            addMouseListener(this);
        }

        public void mousePressed(MouseEvent e) { 
            prevKey = getKey(e.getPoint());
            if (prevKey != null) {
                
                int keyi=prevKey.on();
                repaint();
                if(multiCB.isSelected()) 
                     send(keyi,ON,program1);			
                
                
            }
        }
        public void mouseReleased(MouseEvent e) 
        { 
               if (prevKey != null) {
                int keyi=prevKey.off();
                repaint();
                if(multiCB.isSelected()) 
                    send(keyi,OFF,program1);
              }
                
        }
        public void mouseExited(MouseEvent e) 
        { 
            if (prevKey != null) {
                int keyi=prevKey.off();
                repaint();
                if(multiCB.isSelected()) 
                      send(keyi,OFF,program1);
                prevKey = null;
            }
        }
        public void mouseClicked(MouseEvent e) { }
        public void mouseEntered(MouseEvent e) { }




      

        public Key getKey(Point point) {
            for (int i = 0; i < keys.size(); i++) {
                if (((Key) keys.get(i)).contains(point)) {
                    return (Key) keys.get(i);
                }
            }
            return null;
        }

      
       

        public void paint(Graphics g) //繪制鋼琴鍵

        {
            Graphics2D g2 = (Graphics2D) g;
            Dimension d = getSize();

            g2.setBackground(getBackground());
            g2.clearRect(0, 0, d.width, d.height);

            g2.setColor(Color.white);
            g2.fillRect(0, 0, 42*kw, kh);

            for (int i = 0; i < whiteKeys.size(); i++) {
                Key key = (Key) whiteKeys.get(i);
                if (key.isNoteOn()) {
                    g2.setColor(record ? pink : jfcBlue);
                    g2.fill(key);
                }
                g2.setColor(Color.black);
                g2.draw(key);
            }
            for (int i = 0; i < blackKeys.size(); i++) {
                Key key = (Key) blackKeys.get(i);
                if (key.isNoteOn()) {
                    g2.setColor(record ? pink : jfcBlue);
                    g2.fill(key);

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲成人免费视频| www.在线成人| 日本特黄久久久高潮| 亚洲成人av一区二区| 亚洲成人激情自拍| 日韩精品视频网站| 午夜精品福利一区二区三区蜜桃| 亚洲综合无码一区二区| 亚洲午夜激情av| 三级一区在线视频先锋 | 国产精品一区二区果冻传媒| 激情久久五月天| 国产成人在线影院| av在线这里只有精品| 色999日韩国产欧美一区二区| 91成人在线观看喷潮| 555www色欧美视频| 久久久五月婷婷| 亚洲日本va午夜在线影院| 亚洲精品乱码久久久久久久久| 一区二区久久久| 青青草国产成人av片免费| 精品综合久久久久久8888| 粉嫩13p一区二区三区| 色婷婷综合五月| 6080国产精品一区二区| 久久久国产午夜精品| 最新高清无码专区| 天堂va蜜桃一区二区三区漫画版| 理论片日本一区| 99r精品视频| 欧美肥妇bbw| 国产亚洲人成网站| 亚洲激情自拍偷拍| 免费成人在线观看| 99综合电影在线视频| 欧美视频一区二区三区| 精品久久人人做人人爱| 中文字幕一区二区日韩精品绯色| 亚洲国产婷婷综合在线精品| 国产麻豆欧美日韩一区| 色哟哟一区二区| 26uuu国产一区二区三区| 亚洲精品一二三| 久久99精品一区二区三区| 91视频免费观看| 日韩你懂的电影在线观看| 国产精品不卡一区| 极品美女销魂一区二区三区 | 久久久久久久久蜜桃| 玉米视频成人免费看| 久久99久国产精品黄毛片色诱| 色综合久久久久综合| 久久精品一区二区三区不卡牛牛| 一区二区三区中文字幕精品精品| 国产一区二区按摩在线观看| 欧美视频在线一区| 国产精品国产三级国产a | 欧美一区二区三区视频免费| 中文字幕一区二区三区四区 | 日韩免费看的电影| 韩国一区二区三区| 91片在线免费观看| 国产三级一区二区三区| 日一区二区三区| 色综合天天做天天爱| 国产日韩精品视频一区| 免费高清在线视频一区·| 欧美综合一区二区三区| 国产精品视频线看| 狠狠色狠狠色综合| 91精品国产全国免费观看| 亚洲蜜臀av乱码久久精品| 丁香天五香天堂综合| 日韩午夜电影在线观看| 亚洲电影第三页| 色老汉av一区二区三区| 亚洲欧洲日产国产综合网| 国产一区福利在线| 欧美成人video| 热久久国产精品| 欧美日韩午夜影院| 一区二区视频在线| 99久久夜色精品国产网站| 国产色产综合产在线视频| 国产一区在线精品| 精品国产一二三| 毛片基地黄久久久久久天堂| 欧美人动与zoxxxx乱| 一区二区三区高清在线| 一本色道a无线码一区v| 国产精品丝袜91| 成人av在线观| 国产精品美女久久久久高潮| 白白色亚洲国产精品| 国产精品高清亚洲| 99精品久久只有精品| 欧美激情在线免费观看| 成人一道本在线| 国产精品视频线看| 99精品欧美一区二区三区综合在线| 亚洲国产岛国毛片在线| 成人激情小说网站| 国产精品久久久久久久久免费桃花| 成人av电影免费在线播放| 中国色在线观看另类| 97久久超碰精品国产| 亚洲黄色在线视频| 欧美日本免费一区二区三区| 日韩中文字幕区一区有砖一区 | 91丨porny丨首页| 亚洲黄色在线视频| 欧美视频一区在线观看| 日韩国产在线一| 欧美成人艳星乳罩| 国产成人亚洲精品青草天美| 国产精品美女久久久久久久网站| 99精品国产一区二区三区不卡| 亚洲黄色免费电影| 51久久夜色精品国产麻豆| 黄网站免费久久| 中文字幕一区日韩精品欧美| 色老汉一区二区三区| 日韩avvvv在线播放| 久久精品欧美一区二区三区不卡 | 亚洲精品一区二区三区在线观看| 国产一区二区在线看| 国产精品国产成人国产三级 | 亚洲一二三四在线观看| 在线不卡a资源高清| 国产做a爰片久久毛片| 国产精品丝袜91| 欧美日韩国产片| 狠狠久久亚洲欧美| 亚洲毛片av在线| 91精品国产色综合久久不卡蜜臀| 国产精品一区二区你懂的| 亚洲精品一二三四区| 日韩视频免费直播| 成人av在线一区二区| 石原莉奈在线亚洲三区| 欧美国产一区在线| 7777精品久久久大香线蕉| 国产69精品一区二区亚洲孕妇| 亚洲综合一二区| 久久久久久久久久久久电影 | 国产精品美女久久久久久久网站| 欧美唯美清纯偷拍| 国产成人超碰人人澡人人澡| 亚洲国产美女搞黄色| 欧美国产视频在线| 91精品国产色综合久久ai换脸| proumb性欧美在线观看| 日韩av在线发布| 亚洲美女电影在线| 久久久久久久久久久久久女国产乱| 欧美在线色视频| 成人av网站大全| 蜜桃视频第一区免费观看| 亚洲素人一区二区| 久久综合一区二区| 欧美日韩国产一二三| 成人黄动漫网站免费app| 久久99久久99小草精品免视看| 亚洲精品欧美综合四区| 国产人妖乱国产精品人妖| 欧美日韩成人高清| 91麻豆精品在线观看| 国产精品888| 蜜臀av一区二区| 亚洲丰满少妇videoshd| 国产精品乱人伦| 久久精品免费在线观看| 91精品国产一区二区三区| 欧美综合亚洲图片综合区| 不卡一区二区在线| 国产麻豆成人传媒免费观看| 免费高清在线一区| 天堂蜜桃一区二区三区| 亚洲在线视频网站| 亚洲精选一二三| 亚洲欧美另类图片小说| 国产日韩欧美高清在线| 精品区一区二区| 日韩亚洲电影在线| 91精品国产手机| 欧美日韩夫妻久久| 欧美私模裸体表演在线观看| 91在线视频免费91| 成人18精品视频| 成人av影院在线| 成人免费av资源| 成人av在线网站| 不卡的av网站| 成人黄色小视频| www.欧美.com| 99久久综合精品| 色综合久久久久| 欧美色大人视频| 欧美日韩视频第一区|