Java設計圖形與多媒體處理_java

來源:互聯網
上載者:User

本文實現了兩個效果:

第一種,同心圓效果圖:

/**  *程式要求:建立一個600*600像素的應用程式視窗,並在視窗中繪製5個不同顏色的同心圓,  *所有圓心都是螢幕的中心點,相鄰兩個圓直接的半徑相差50像素  *效果圖如下圖所示(顏色隨機設定),來源程式儲存為Ex7_1.java。  *作者:wwj  *日期:2012/4/25  *功能:顯示一個有5個不同顏色的同心圓  **/   import javax.swing.*;  import java.awt.*;  import java.awt.Color;  public class Ex7_1 extends JFrame  {    int red,green,blue;    Color color;     public Ex7_1()    {      super("一個有5個不同顏色的同心圓");  //顯示視窗名稱      setSize(600,600);           //設定視窗大小      setVisible(true);           //設定為可見      setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//設定視窗關閉動作       }        public void paint(Graphics g)    {      //第一個圓     red=(int)(Math.random()*255);     green=(int)(Math.random()*255);     blue=(int)(Math.random()*255);     color=new Color(red,green,blue);     g.setColor(color);     g.fillOval(175,175,250,250);     //第二個圓     red=(int)(Math.random()*255);     green=(int)(Math.random()*255);     blue=(int)(Math.random()*255);     color=new Color(red,green,blue);     g.setColor(color);     g.fillOval(200,200,200,200);     //第三個圓     red=(int)(Math.random()*255);     green=(int)(Math.random()*255);     blue=(int)(Math.random()*255);     color=new Color(red,green,blue);     g.setColor(color);     g.fillOval(225,225,150,150);     //第四個圓     red=(int)(Math.random()*255);     green=(int)(Math.random()*255);     blue=(int)(Math.random()*255);     color=new Color(red,green,blue);     g.setColor(color);     g.fillOval(250,250,100,100);     //第五個圓     red=(int)(Math.random()*255);     green=(int)(Math.random()*255);     blue=(int)(Math.random()*255);     color=new Color(red,green,blue);     g.setColor(color);     g.fillOval(275,275,50,50);     }           public static void main(String[] args)    {      Ex7_1 e = new Ex7_1();       }   } 

第二種,播放音樂和切換圖片的小程式效果圖:

/**  *程式要求:編寫一個Applet的小程式,準備5幅圖片和三個音樂檔案,繪製到Applet中,  *並增加幾個按鈕,控製圖片的切換、放大、縮小和音樂檔案的播放。  *作者:wwj  *日期:2012/4/29  *參考:neicole  *功能:能進行圖片和歌曲的選擇變換的applet小程式  **/   import javax.swing.*;  import java.awt.*;  import java.awt.event.*;  import java.applet.Applet;  import java.applet.AudioClip;     public class Ex7_2 extends Applet implements ActionListener,ItemListener  {     //建立兩個面板    JPanel p1=new JPanel();    JPanel p2=new JPanel();    JPanel p3=new JPanel();    //聲音對象    AudioClip[] sound=new AudioClip[3];    int playingSong=0;    //切換圖片的按鈕    JButton lastPic=new JButton("上一張");    JButton setLarge=new JButton("放大");    JButton setLittle=new JButton("縮小");    JButton nextPic=new JButton("下一張");    //切換歌曲的按鈕    JButton lastSound=new JButton("上一首");    JButton play=new JButton("播放");    JButton loop=new JButton("連續");    JButton stop=new JButton("停止");    JButton nextSound=new JButton("下一首");    //曲目下拉式清單    JComboBox xx;    String names[]={ "曲目1.wav","曲目2.wav","曲目3.wav"};      //建立畫布對象   MyCanvasl showPhotos;          public void init()    {      //視窗布局      this.setLayout(new BorderLayout());       //為圖片控制按鈕註冊監聽器      lastPic.addActionListener(this);      setLarge.addActionListener(this);      setLittle.addActionListener(this);      nextPic.addActionListener(this);       //向面板p1添加組件      p1.add(lastPic);      p1.add(setLarge);      p1.add(setLittle);      p1.add(nextPic);      p1.repaint();        //執行個體化下拉式清單對象     xx = new JComboBox(names);     xx.addItemListener(this);      //為控制播放音樂按鈕註冊監聽器     lastSound.addActionListener(this);     play.addActionListener(this);     loop.addActionListener(this);     stop.addActionListener(this);     nextSound.addActionListener(this);      for(int i=0;i<3;i++)      {       sound[i]=getAudioClip(getCodeBase(),"music/"+"曲目"           +Integer.toString(i+1)+".wav");      }                //向面板p2添加組件      p2.add(xx);      p2.add(lastSound);      p2.add(play);      p2.add(loop);      p2.add(stop);      p2.add(nextSound);      p2.repaint();          showPhotos = new MyCanvasl();     p3.add(showPhotos);      p3.repaint();      //把面板p1和p2分別布置到視窗的北部和南部       add(p1,BorderLayout.NORTH);      add(p2,BorderLayout.SOUTH);      add(p3,BorderLayout.CENTER);       this.repaint();     }      //按鈕的事件處理    public void actionPerformed(ActionEvent e)    {           if(e.getSource() == lastPic){       showPhotos.changePhotoShow('P');     }     else if(e.getSource() == nextPic){       showPhotos.changePhotoShow('N');     }     else if(e.getSource() == setLarge){       showPhotos.changePhotoSize('B');     }     else if(e.getSource() == setLittle){       showPhotos.changePhotoSize('S');     }        else if(e.getSource()==lastSound){ //上一首       sound[playingSong].stop();       playingSong=(playingSong-1+3)%3;       xx.setSelectedIndex(playingSong);       sound[playingSong].play();      }     else if(e.getSource()==play){    //按下播放按鈕       sound[playingSong].play();     }     else if(e.getSource()==loop){    //按下迴圈按鈕       sound[playingSong].loop();     }     else if(e.getSource()==stop){    //按下停止按鈕       sound[playingSong].stop();     }     else{                //下一首       sound[playingSong].stop();       playingSong=(playingSong+1)%3;       xx.setSelectedIndex(playingSong);       sound[playingSong].play();      }      }      //下拉式清單的事件處理    public void itemStateChanged(ItemEvent e)    {            sound[playingSong].stop();      sound[playingSong]=getAudioClip(getCodeBase(),"music/"+xx.getSelectedItem());    }    class MyCanvasl extends Canvas   {          public Image[] img=new Image[5];      int MaxWidth = 600;     int MaxHeight = 500;     int nowImageIndex = 0;     int coordinateX = 0;     int coordinateY = 0;     int currentWidth = MaxWidth;     int currentHeight = MaxHeight;           MyCanvasl(){      setSize(MaxWidth,MaxHeight);      //擷取目前的目錄下的圖片      for(int i=0;i<5;i++){        img[i]=getImage(getCodeBase(),"image/"+Integer.toString(i+1)+".jpg");      }     }       private void changePhotoIndex(int index){       nowImageIndex = index;       changePhotoSize('M');     }        public void changePhotoShow(char command){       if('P' == command){         changePhotoIndex((nowImageIndex + 5 - 1 ) % 5);       }       else if('N' == command){         changePhotoIndex((nowImageIndex + 1) % 5);       }     }             public void changePhotoSize(char command){       if ('M' == command){         currentWidth = MaxWidth;         currentHeight = MaxHeight;       }       else if ('B' == command){         if(MaxWidth >= (currentWidth + 100) && MaxHeight >= (currentHeight + 100)){           currentWidth += 100;           currentHeight += 100;         }       }       else if('S' == command){         if((0 < (currentWidth - 100)) && (0 < (currentHeight - 100))){           currentWidth = currentWidth - 100;           currentHeight = currentHeight - 100;         }       }       coordinateX = (MaxWidth - currentWidth) / 2;       coordinateY = (MaxHeight - currentHeight) / 2;       repaint();     }       //paint方法用來在視窗顯示圖片    public void paint(Graphics g){       g.drawImage(img[nowImageIndex],coordinateX,coordinateY,currentWidth,currentHeight,this);     }   }  } 

 以上就是關於Java的圖形設計以及多媒體處理的全部內容,希望對大家的學習有所協助。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.