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

📄 javaapplet.java

📁 有关java的源程序,为讲授java程序设计课程使用
💻 JAVA
字号:
//******************************************************************************
// JavaApplet.java:	Applet
//
//******************************************************************************
import java.applet.*;
import java.awt.*;
import java.awt.event.*;
public class JavaApplet extends Applet implements
	Runnable,MouseListener,MouseMotionListener,ActionListener,ItemListener
{
	private Thread	 m_MultiThread = null;
	private Graphics m_Graphics;
	private Image	 m_Images[];
	private int 	 m_nCurrImage;
	private int 	 m_nImgWidth  = 0;
	private int 	 m_nImgHeight = 0;
	private boolean  m_fAllLoaded = false;
	private final int NUM_IMAGES = 18;
	int centerX,centerY;
	private boolean threadRunning=false;
	Button playButton,stopButton,clearImageButton;
	Dimension rectSize;

	PopupMenu popupMenu;
	MenuItem popUpOneItem,popUpTwoItem,popUpThreeItem;
	CheckboxMenuItem checkOneItem,checkTwoItem;
	public JavaApplet()
	{
		// TODO: Add constructor code here
	}

	public String getAppletInfo()
	{
		return "Name: MultiThread\r\n" +
		       "Author: user18\r\n" +
		       "Created with Microsoft Visual J++ Version 1.1";
	}
	public void init()
	{
	    setLayout(new BorderLayout()); //改变Applet的布局方式
		rectSize=getSize();
    	resize(rectSize);	//可以调用resize()来重置Applet的大小
    	    
    	Panel upPanel=new Panel();
		
	    playButton=new Button("Play"); 
		playButton.addMouseListener(this);
		stopButton=new Button("Stop"); 
		stopButton.addMouseListener(this);
		clearImageButton=new Button("Clear");
		clearImageButton.addMouseListener(this);
		
		upPanel.add(playButton);
		upPanel.add(stopButton);
		upPanel.add(clearImageButton);
		add(upPanel,"North");
		
		popupMenu=new PopupMenu();
		popUpOneItem=new MenuItem("PopUp Menu One");
		popupMenu.add(popUpOneItem);
		popUpOneItem.addActionListener(this);

		popUpTwoItem=new MenuItem("PopUp Menu Two");
		popupMenu.add(popUpTwoItem);
		popUpTwoItem.addActionListener(this);

		popUpThreeItem=new MenuItem("PopUp Menu Three");
		popupMenu.add(popUpThreeItem);
		popUpThreeItem.addActionListener(this);

		checkOneItem=new CheckboxMenuItem("Check Menu One");
		popupMenu.add(checkOneItem);
		checkOneItem.addItemListener(this);

		checkTwoItem=new CheckboxMenuItem("Check Menu Two");
		popupMenu.add(checkTwoItem);
		checkTwoItem.addItemListener(this);
		add(popupMenu);

		addMouseListener(this);
		addMouseMotionListener(this);
	}
	public void destroy()
	{
		// TODO: Place applet cleanup code here
	}
	private void displayImage(Graphics g)
	{
		if (!m_fAllLoaded)
			return;
		g.drawImage(m_Images[m_nCurrImage],centerX,centerY, null);
	}
	public void paint(Graphics g)
	{
		if (m_fAllLoaded)
		{
			Rectangle r = g.getClipRect();
			
			g.clearRect(r.x, r.y, r.width, r.height);
			displayImage(g);
		}
		else
			g.drawString("Loading images...", 10, 20);

		// TODO: Place additional applet Paint code here
	}

	public void startThread()
	{
		if (m_MultiThread == null)
		{
			m_MultiThread = new Thread(this);
			m_MultiThread.start();
			threadRunning=true;
		}
	}
	
	public void stopThread()
	{
		if (m_MultiThread != null)
		{
			m_MultiThread.stop();
			m_MultiThread = null;
			threadRunning=false;
		}

	}

	
	public void run()
	{
		m_nCurrImage = 0;
		
        if (!m_fAllLoaded)
		{
    		repaint();
    		m_Graphics = getGraphics();
    		m_Images   = new Image[NUM_IMAGES];

    		MediaTracker tracker = new MediaTracker(this);
    		String strImage;

    		for (int i = 1; i <= NUM_IMAGES; i++)
    		{
    			// Build path to next image
    			//--------------------------------------------------------------
    			strImage = "images/img00" + ((i < 10) ? "0" : "") + i + ".gif";
    			m_Images[i-1] = getImage(getDocumentBase(), strImage);

                tracker.addImage(m_Images[i-1], 0);
    		}

    			try
			{
				tracker.waitForAll();
				m_fAllLoaded = !tracker.isErrorAny();
			}
			catch (InterruptedException e)
			{
			}
			
			if (!m_fAllLoaded)
			{
			    stop();
			    m_Graphics.drawString("Error loading images!", 10, 40);
			    return;
			}
			

		    m_nImgWidth  = m_Images[0].getWidth(this);
		    m_nImgHeight = m_Images[0].getHeight(this);
		    getCenterXY();	
        }		
		repaint();

		while (true)
		{
			try
			{
				// Draw next image in animation
				//--------------------------------------------------------------
				displayImage(m_Graphics);
				m_nCurrImage++;
				if (m_nCurrImage == NUM_IMAGES)
					m_nCurrImage = 0;

				// TODO:  Add additional thread-specific code here
				Thread.sleep(50);
			}
			catch (InterruptedException e)
			{
				stopThread();
			}
		}
	}
	public void getCenterXY()
	{
            rectSize=getSize();				
	    centerX=(rectSize.width - m_nImgWidth)/ 2;
	    centerY=(rectSize.height - m_nImgHeight)/2;
	}
	
	public void mouseDragged(MouseEvent evt)
	{
		Graphics currentG=getGraphics();
		try
		{
			Thread.sleep(150);
		}
		catch (InterruptedException e)
		{
			stopThread();
		}
		currentG.clearRect(centerX,centerY,m_nImgWidth*2,m_nImgHeight);
		centerX=evt.getX();
		centerY=evt.getY();
	}
	public void mouseMoved(MouseEvent evt)
	{
		showStatus("Your May Double Click to Pop Up A Menu");
	}
	public void mousePressed(MouseEvent evt)
	{
	}

	public void mouseReleased(MouseEvent evt)
	{
	       Graphics currentG=getGraphics();
	       currentG.clearRect(centerX,centerY,m_nImgWidth*2,m_nImgHeight);
	       getCenterXY();
	}

	public void mouseEntered(MouseEvent evt)
	{
		showStatus("Your Mouse Enter The Applet Panel");
	}
	public void mouseExited(MouseEvent evt)
	{
		showStatus("Your Mouse Exit The Applet Panel");
	}

	public void mouseClicked(MouseEvent evt)
	{
	   int clickCount=evt.getClickCount();  //get the User Mouse Click Count 
	   switch(clickCount)
	    {		
		case 1:   //Click One Time
			if(evt.getSource()==this)    //Clicked at My Applet ?
			{
			    
			}
			else if(evt.getSource()==playButton)    //Clicked at Play Button ?
			{
				startThread();
			
			}
			else if(evt.getSource()==stopButton)    //Clicked at Stop Button ?
			{
				stopThread();
			
			}
			else if(evt.getSource()==clearImageButton)    //Clicked at Clear Button ?
			{
				stopThread();
				Graphics currentG=getGraphics();
				currentG.setClip((rectSize.width - m_nImgWidth)/2,
			                   	(rectSize.height - m_nImgHeight)/2,
			                    	m_nImgWidth,
			                    	m_nImgHeight);
				currentG.clearRect((rectSize.width - m_nImgWidth)/2,
				                   (rectSize.height - m_nImgHeight)/2,
					             m_nImgWidth,
					             m_nImgHeight); 
			
			}
		break;
		case 2:		//Click Two Time 
			showStatus("You Click mouse Twice(DbClick)");
			popupMenu.show(this,evt.getX(),evt.getY());
		break;		
	   }
	}
	public void actionPerformed(ActionEvent evt)
	{
		if(evt.getSource()==popUpOneItem)
		{
			showStatus("You Click The PopUp Menu One");
		}
		else if(evt.getSource()==popUpTwoItem)
		{
			showStatus("You Click The PopUp Menu Two");
		}
		else if(evt.getSource()==popUpThreeItem)
		{
			showStatus("You Click The PopUp Menu Three");
		}

	}
	public void itemStateChanged(ItemEvent evt)
	{
		if(evt.getSource()==checkOneItem)
		{
			boolean checkOneMenu;
			if(evt.getStateChange()==evt.SELECTED)
			{
				checkOneMenu=true;
				showStatus("The PopUp Check Menu One Is Selected");
			}
			else if(evt.getStateChange()==evt.DESELECTED)
			{
				checkOneMenu=false;
				showStatus("The PopUp Check Menu One Is DeSelected");
			}	

		}
		else if(evt.getSource()==checkTwoItem)
		{
			boolean checkTwoMenu;
			if(evt.getStateChange()==evt.SELECTED)
			{
				checkTwoMenu=true;
				showStatus("The PopUp Check Menu Two Is Selected");
			}
			else if(evt.getStateChange()==evt.DESELECTED)
			{
				checkTwoMenu=false;
				showStatus("The PopUp Check Menu Two Is DeSelected");
			}	

		}
	}
}

⌨️ 快捷键说明

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