⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pianao.java

📁 几个java代码
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
                    g2.setColor(Color.black);
                    g2.draw(key);
                } else {
                    g2.setColor(Color.black);
                    g2.fill(key);
                }
            }
        }
    } 



      class ChannelData {

        MidiChannel channel;
        boolean solo, mono, mute, sustain;
        int velocity, pressure, bend, reverb;
        int row, col, num;
 
        public ChannelData(MidiChannel channel, int num) {
            this.channel = channel;
            this.num = num;
            velocity = pressure = bend = reverb = 64;
        }

        public void setComponentStates() {
            table.setRowSelectionInterval(row, row);
            table.setColumnSelectionInterval(col, col);

            soloCB.setSelected(solo);
            monoCB.setSelected(mono);
            muteCB.setSelected(mute);
          

            JSlider slider[] = { veloS, presS, bendS, revbS };
            int v[] = { velocity, pressure, bend, reverb };
            for (int i = 0; i < slider.length; i++) {
                TitledBorder tb = (TitledBorder) slider[i].getBorder();
                String s = tb.getTitle();
                tb.setTitle(s.substring(0, s.indexOf('=')+1)+s.valueOf(v[i]));
                slider[i].repaint();
            }
        }
    } 



    
    class InstrumentsTable extends JPanel {

        private String names[] = { 
         "钢琴类", "钟琴类", "管风琴", "吉他类", 
           "低音乐器", "弦乐器", "合奏", "军乐", 
           "簧乐器", "管乐器", "合成线", "合成板",
           "合成效果", "民族乐", "打击乐器","声音效果" };
        private int nRows =8;//同一种乐器下音乐种类

        private int nCols = names.length; 
        PIANAO env;
        public InstrumentsTable(PIANAO env) {
            this.env=env;
            setLayout(new BorderLayout());
            setBackground(new Color(60,230,167)); 
            setForeground(new Color(29,56,167));
            TableModel dataModel = new AbstractTableModel() {
                public int getColumnCount() { return nCols; }
                public int getRowCount() { return nRows;}
                public Object getValueAt(int r, int c) { 
                    if (instruments != null) {
                        return instruments[c*nRows+r].getName();
                    } else {
                        return Integer.toString(c*nRows+r);
                    }
                }
                public String getColumnName(int c) { 
                    return names[c];
                }
                public Class getColumnClass(int c) {
                    return getValueAt(0, c).getClass();
                }
                public boolean isCellEditable(int r, int c) {return false;}
                public void setValueAt(Object obj, int r, int c) {}
            };
    
            table = new JTable(dataModel);
            table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
            addKeyListener(env);
            
            ListSelectionModel lsm = table.getSelectionModel();
            lsm.addListSelectionListener(new ListSelectionListener() {
                public void valueChanged(ListSelectionEvent e) {
                    ListSelectionModel sm = (ListSelectionModel) e.getSource();
                    if (!sm.isSelectionEmpty()) {
                        cc.row = sm.getMinSelectionIndex();
                    }
                    
                    programChange(cc.col*nRows+cc.row );

                }
            });

            lsm = table.getColumnModel().getSelectionModel();
            lsm.addListSelectionListener(new ListSelectionListener() {
                public void valueChanged(ListSelectionEvent e) {
                    ListSelectionModel sm = (ListSelectionModel) e.getSource();
                    if (!sm.isSelectionEmpty()) {
                        cc.col = sm.getMinSelectionIndex();
                    }
                    programChange(cc.col*nRows+cc.row);
                }
            });


            table.setPreferredScrollableViewportSize(new Dimension(nCols*110, 200));
            table.setCellSelectionEnabled(true);
            table.setColumnSelectionAllowed(true);
            for (int i = 0; i < names.length; i++) {
                TableColumn column = table.getColumn(names[i]);
                column.setPreferredWidth(110);
            }
            table.setAutoResizeMode(table.AUTO_RESIZE_OFF);
        
            JScrollPane sp = new JScrollPane(table);
            sp.setVerticalScrollBarPolicy(sp.VERTICAL_SCROLLBAR_NEVER);
            sp.setHorizontalScrollBarPolicy(sp.HORIZONTAL_SCROLLBAR_ALWAYS);
            sp.getHorizontalScrollBar().setBackground(new Color(90,220,90));
            add(sp);
        }
        
     public boolean isFocusTraversable (){
              return true;
   }

        public Dimension getPreferredSize() {
            return new Dimension(800,170);
        }
        public Dimension getMaximumSize() {
            return new Dimension(800,170);
        }

        
    }


    
    class Controls extends JPanel implements ActionListener, ChangeListener, ItemListener {

        public JButton recordB;
        JMenu menu;
        int fileNum = 0;
        PIANAO evn;
        JButton copyrightB;
        JLabel l;
        Mywondow copyrightW;
        
        public Controls(PIANAO evn) {
                   
             
            
            setLayout(new BoxLayout(this, BoxLayout.Y_AXIS));
            
            setBorder(new BevelBorder(BevelBorder.RAISED,new Color(0,210,217),new Color(0,210,217)));
            this.evn=evn;
            JPanel p = new JPanel();
            p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));

            veloS = createSlider("速率", p);
            presS = createSlider("压力", p);
            revbS = createSlider("回音", p);


            bendS = create14BitSlider("混音", p);

            p.add(Box.createHorizontalStrut(10));
            add(p);

            p = new JPanel();
            p.setBorder(new EmptyBorder(30,0,90,0));
            p.setLayout(new BoxLayout(p, BoxLayout.X_AXIS));
    
            JComboBox combo = new JComboBox();
            combo.setPreferredSize(new Dimension(120,25));
            combo.setMaximumSize(new Dimension(120,25));
            combo.setBorder(new BevelBorder(BevelBorder.RAISED,new Color(0,0,222),new Color(0,0,255)));
            
            combo.setBackground(new Color(120,35,40));
            for (int i = 1; i <= 16; i++) {
                combo.addItem("声道 " + String.valueOf(i));
            } 
            combo.addKeyListener(evn);
            combo.addItemListener(this);
            
            p.add(combo);
            
            p.add(Box.createHorizontalStrut(20));

            muteCB = createCheckBox("静音", p);
            soloCB = createCheckBox("独奏", p);
            monoCB = createCheckBox("合奏", p);
            

            
            p.add(Box.createHorizontalStrut(10));
            

            ButtonGroup gg=new ButtonGroup();
            gg.add(multiCBmouse);
            gg.add(multiCBkey);
            p.add(multiCBmouse);
            p.add(multiCBkey);
            p.add(mouseOverCB);
            ButtonGroup g=new ButtonGroup();
            g.add(multiCBn);

            g.add(multiCB);
            g.add(multiCB1);
            p.add(multiCBn);
            p.add(multiCB);
            p.add(multiCB1);


            multiCBmouse.setFont(new Font("宋体", Font.PLAIN, 14));
            multiCBkey.setFont(new Font("宋体", Font.PLAIN, 14));
            multiCBn.setFont(new Font("宋体", Font.PLAIN, 14));
            mouseOverCB.setFont(new Font("宋体", Font.PLAIN, 14));
            multiCB.setFont(new Font("宋体", Font.PLAIN, 14));
            multiCB1.setFont(new Font("宋体", Font.PLAIN, 14));
            p.add(Box.createHorizontalStrut(10));
            
            
            p.add( new JLabel("  "));                               
            p.add( l=new JLabel("版权"));
            l.setForeground(new Color(0,0,255));
            l.setCursor(new Cursor(Cursor.HAND_CURSOR));
            l.setFont(new Font("宋体", Font.PLAIN, 14));
            l.addMouseListener(new Mouselistened() );
              

            copyrightW=new Mywondow(l);
                   
                   
                   
                   copyrightW.setVisible(false);


            add(p);
             
        }

        public JButton createButton(String name, JPanel p) {
            JButton b = new JButton(name);
            b.setFont(new Font("宋体", Font.PLAIN, 14));
            b.addActionListener(this);
            b.addKeyListener(evn);
            b.setBorder(new BevelBorder(BevelBorder.RAISED));
            
            p.add(b);
            return b;
        }

        private JCheckBox createCheckBox(String name, JPanel p) {
            JCheckBox cb = new JCheckBox(name);
            cb.setBorder(new BevelBorder(BevelBorder.RAISED,new Color(0,0,222),new Color(0,0,255)));
            cb.setFont(new Font("宋体", Font.PLAIN, 14));
            cb.addItemListener(this);
            cb.addKeyListener(evn);
            p.add(cb);
            return cb;
        }

        private JSlider createSlider(String name, JPanel p) {
            JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 127, 64);
            slider.addChangeListener(this);
            slider.addKeyListener(evn);
            slider.setFont(new Font("宋体", Font.PLAIN, 16));
            TitledBorder tb = new TitledBorder(new BevelBorder(BevelBorder.RAISED));
            
            tb.setTitle(name + " = 64");
            slider.setBorder(tb);
            p.add(slider);
            p.add(Box.createHorizontalStrut(5));
            return slider;
        }

        private JSlider create14BitSlider(String name, JPanel p) {
            JSlider slider = new JSlider(JSlider.HORIZONTAL, 0, 16383, 8192);
            slider.addChangeListener(this);
            slider.addKeyListener(evn); 
            

            
            slider.setFont(new Font("宋体", Font.PLAIN, 16));
            TitledBorder tb = new TitledBorder(new BevelBorder(BevelBorder.RAISED));
            tb.setTitle(name + " = 8192");
            slider.setBorder(tb);
            p.add(slider);
            p.add(Box.createHorizontalStrut(5));
            return slider;
        }

        public void stateChanged(ChangeEvent e) {
            JSlider slider = (JSlider) e.getSource();
            int value = slider.getValue();
            TitledBorder tb = (TitledBorder) slider.getBorder();
            String s = tb.getTitle();
            tb.setTitle(s.substring(0, s.indexOf('=')+1) + s.valueOf(value));
            if (s.startsWith("速率")) {
                cc.velocity = value;
            } else if (s.startsWith("压力")) {
                cc.channel.setChannelPressure(cc.pressure = value);
            } else if (s.startsWith("混音")) {
                cc.channel.setPitchBend(cc.bend = value);
            } else if (s.startsWith("回音")) {
                cc.channel.controlChange(REVERB, cc.reverb = value);
            }
            slider.repaint();
             
        }

        public void itemStateChanged(ItemEvent e) {
            if (e.getSource() instanceof JComboBox) {
                JComboBox combo = (JComboBox) e.getSource();
                cc = channels[combo.getSelectedIndex()];
                cc.setComponentStates();
            } else {
                JCheckBox cb = (JCheckBox) e.getSource();
                String name = cb.getText();
                if (name.startsWith("静音")) {
                    cc.channel.setMute(cc.mute = cb.isSelected());
                } else if (name.startsWith("独奏")) {
                    cc.channel.setSolo(cc.solo = cb.isSelected());
                } else if (name.startsWith("合奏")) {
                    cc.channel.setMono(cc.mono = cb.isSelected());
                } else if (name.startsWith("持续")) {
                    cc.sustain = cb.isSelected();
                    cc.channel.controlChange(SUSTAIN, cc.sustain ? 127 : 0);
                }
            }
        }

        public void actionPerformed(ActionEvent e) {
            JButton button = (JButton) e.getSource();
            if (button.getText().startsWith("关闭")) {
                for (int i = 0; i < channels.length; i++) {
                    channels[i].channel.allNotesOff();
                }
                for (int i = 0; i < keys.size(); i++) {
                    ((Key) keys.get(i)).setNoteState(OFF);
                }
            } else if (button.getText().startsWith("版权 ")) {
                  
                   
                     
            }
        }

class Mouselistened  implements MouseListener{


 public void mousePressed(MouseEvent e) { 
            
        }
        public void mouseReleased(MouseEvent e) { 
           
        }
        public void mouseExited(MouseEvent e) { copyrightW.setVisible(false);}
        public void mouseClicked(MouseEvent e) {  }
        public void mouseEntered(MouseEvent e) {
                                               
                                                
                                               copyrightW.setVisible(true); 
                                              }

}

class Mywondow extends JWindow{
   private String information; 
   private JComponent component;
   Mywondow(){
          information=new String("模拟钢琴:完成时间(2003年6月16日),作者(王振刚), 未经许可,  不得随意拷贝");
          
          init();
   }
   Mywondow(JComponent component){
          this.component=component;
          
          init();
  }   
   
   private void init(){
                   JLabel l;
                   JPanel ppp=new JPanel();
                   ppp.setLayout(new BoxLayout(ppp,BoxLayout.Y_AXIS  )  );
                   
                   ppp.add(l=new JLabel("模拟钢琴:   1.0版本" ));
                   l.setFont(new  Font("宋体", Font.PLAIN, 14));
                   ppp.add(l=new JLabel("完成时间:   2003年6月16日" ));
                   l.setFont(new Font("宋体", Font.PLAIN, 14));
                   ppp.add(l=new JLabel("作者:     王振刚" ));
                   l.setFont(new Font("宋体", Font.PLAIN, 14));
                   ppp.add(l=new JLabel("未经许可,  不得随意拷贝" ));
                   l.setFont(new Font("宋体", Font.PLAIN, 14));
                   ppp.setBackground(new Color(160,25,255));
                   getContentPane().add(ppp);
                   
                   Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
                   
                   
                   setBounds(screenSize.width/2 - 180/2, screenSize.height/2 - 100/2,185,72); 
                   
                   setBackground(new Color(160,25,255));
   }
}

} 
        public static void main(String args[]) {
        final PIANAO PIANAO = new PIANAO();
        PIANAO.open();
        JFrame f = new JFrame("王振刚的钢琴");
        f.addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {System.exit(0);}
        });
        f.getContentPane().add("Center", PIANAO);
        f.pack();
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        
        f.setSize(screenSize);
        
        f.setVisible(true);
    }
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -