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

📄 turnpicture.java

📁 在这个JApplet小应用程序中
💻 JAVA
字号:
import java.awt.*;
import java.applet.*;
import java.awt.image.*;
import java.awt.event.*;
import java.net.*;
import javax.swing.*;

/** 在这个JApplet小应用程序中,图片的切换有左右
  * 翻转过去的感觉,前一张翻转过去后接着显示后一张 */

/** JApplet类 */
public class TurnPicture extends JApplet
{
	private Thread runner;
	private Image image[];
	private BufferedImage showImage;
	private Graphics2D showG;
	private int currentImage;
	private int imageCount;
	private int imageWidth;
	private int imageHeight;
	private String imageName;
	private ImagePanel p;
	
	/** init()方法 */	
	public void init()
	{
		try
		{
			//从HTML文件中获取参数
			String param=getParameter("imagecount");
			if(param!=null)
				imageCount=Integer.parseInt(param);
			else
				throw new Exception();
			image=new Image[imageCount];
			for(int i=0;i<imageCount;i++)
			{
				imageName=getParameter("image"+(i+1));
				if (imageName==null) throw new Exception();
				loadImage(i); //载入每一幅图象
			}
		}
		catch(Exception e)	
		{
			showStatus("Error: "+e);
		}
		imageWidth=image[0].getWidth(this);
		imageHeight=image[0].getHeight(this);
		
		showImage= new BufferedImage(imageWidth,imageHeight,BufferedImage.TYPE_INT_RGB);// 生成图像的后台缓冲
		showG=showImage.createGraphics();//获取在缓冲区做图的环境
		showG.drawImage(image[0],0,0,null);

		/* 创建画图面板并将其作为JApplet的内容面板 */
		p=new ImagePanel();
		setContentPane(p);
		
		runner=new Thread(p);//在一个线程中显示动画
		runner.start();
	}//init()方法结束
	
	/** loadImage()方法用来载入图象 */
	public void loadImage(int i)
	{
		try
		{
			URL url=new URL(getDocumentBase(),imageName);
			image[i]=getImage(url);
			MediaTracker tracker=new MediaTracker(this);
			tracker.addImage(image[i],0);
			tracker.waitForID(0);
		}
		catch(InterruptedException e)
		{
			showStatus("Loading interrupted");
		}
		catch(MalformedURLException e)
		{
			showStatus("Bad URL");
		}
	}//loadImage()方法结束
	
	/** JApplet类的start()方法 */
	public void start()
	{//浏览器返回页面时恢复动画线程
		if (runner==null)
		{
			runner=new Thread(p);
			runner.start();
		}
	}
	
	/** JApplet类的stop()方法 */
	public void stop()
	{//浏览器离开页面时取消动画线程
		runner.interrupt();
		runner=null;
	}

	/** 显示动画的面板类,为内部类, */
	public class ImagePanel extends JPanel implements Runnable
	{
		
		/** 面板组件的paintComponent()方法 */
		public void paintComponent(Graphics g)
		{
			super.paintComponent(g);
			if(showImage==null) return;
			g.drawImage(showImage,0,0,null);
		}
	
		/** 在线程中显示动画 */	
		public void run()
		{
			while (!Thread.interrupted())
			{
				try
				{
					Thread.sleep(1000);
					for(int i=0;i<=imageWidth/2;i++)
					{
						runner.sleep(30);
						showG.setColor(Color.white);
						showG.fillRect(0,0,imageWidth,imageHeight);
						showG.drawImage(image[currentImage],i,0,imageWidth-2*i,imageHeight,null);
						repaint();
					}
					
					currentImage=(currentImage+1)%imageCount;
					
					for(int i=0;i<=imageWidth/2;i++)
					{
						runner.sleep(30);
						showG.setColor(Color.white);
						showG.fillRect(0,0,imageWidth,imageHeight);
						showG.drawImage(image[currentImage],(imageWidth/2)-i,0,2*i,imageHeight,null);
						repaint();
					}
				}
				catch(InterruptedException e)
				{}
			}
		}//run()方法结束
	}//ImagePanel类定义结束
}//TurnPicture类定义结束

⌨️ 快捷键说明

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