?? javaapplet.java
字號(hào):
//******************************************************************************
// 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); //可以調(diào)用resize()來(lái)重置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");
}
}
}
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -