您的位置:首页 > 编程语言 > Java开发

Java 语言程序设计 -图形与多媒体处理

2012-04-29 18:21 381 查看
同心圆效果图:





/**
 *程序要求:新建一个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);

	 }
	}
 }
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: