<applet code=mButton.class name=mButton width=80 height=50> <param name=up value="fin.gif"> <param name=down value="find.gif"> <param name=idle value="fini.gif"> <param name=URL value="http://bet1.puv.fi"> <param name=Status value="Samma på Finska!"> <A HREF="http://bet1.puv.fi"><IMG SRC="fin.gif" ALT="Suomenkilinen" BORDER=0></A> </applet>Förklaringar:
//******************************************************************************
// mButton.java: Applet
// Observera att filen måste heta mButton.java (med stort B)
//******************************************************************************
import java.applet.*; // För applet hantering
import java.awt.*; // För grafikanteringen
import java.net.*; // För URL hanteringen
//==============================================================================
// Main Class for applet mButton
// Jag hade en bra orsak till varför jag kallade klassen för mButton
// men den har jag glömt - konstigt namn...
//==============================================================================
public class mButton extends Applet
{
// Några flaggor
private boolean m_bAllLoaded = false;
private boolean m_bOnButton = false;
private boolean m_bStillDown = false;
// Variabler för de olika bilderna som behövs
Image m_imageUp;
Image m_imageDn;
Image m_imageIdle;
Image m_imageCurrent;
// Variabler för de parametrarna som getts åt programmet
private String m_sUp = "";
private String m_sDown = "";
private String m_sIdle = "";
private String m_sURL = "";
private String m_sStatus = "";
// Används för hantering av parametrarna
private final String PARAM_sUp = "up";
private final String PARAM_sDown = "down";
private final String PARAM_sIdle = "idle";
private final String PARAM_sURL = "URL";
private final String PARAM_sStatus = "Status";
//--------------------------------------------------------------------------
// Allmän info om programmet.
//--------------------------------------------------------------------------
public String getAppletInfo()
{
return "Name: mButton\r\n" +
"Author: Anders Enges\r\n";
}
//--------------------------------------------------------------------------
// Info om de paramtrar som kan ges.
//--------------------------------------------------------------------------
public String[][] getParameterInfo()
{
String[][] info =
{
{ PARAM_sUp, "String", "Picture for Mouse Over" },
{ PARAM_sDown, "String", "Picture for Pressed" },
{ PARAM_sIdle, "String", "Picture for idle" },
{ PARAM_sURL, "String", "URL to jump to" },
{ PARAM_sStatus, "String", "Status text" },
};
return info;
}
//--------------------------------------------------------------------------
// Detta körs första gången Appleten laddas.
//--------------------------------------------------------------------------
public void init()
{
String m_sParam;
MediaTracker tracker = new MediaTracker(this);
// Vi kollar en parameter åt gången.
m_sParam = getParameter(PARAM_sUp);
if (m_sParam != null)
m_sUp = m_sParam;
m_sParam = getParameter(PARAM_sDown);
if (m_sParam != null)
m_sDown = m_sParam;
m_sParam = getParameter(PARAM_sIdle);
if (m_sParam != null)
m_sIdle = m_sParam;
m_sParam = getParameter(PARAM_sURL);
if (m_sParam != null)
m_sURL = m_sParam;
m_sParam = getParameter(PARAM_sStatus);
if (m_sParam != null)
m_sStatus = m_sParam;
// Läs in bilderna till programmet.
m_imageUp = getImage(getDocumentBase(), m_sUp);
// Programmet fortsätter fast bilden ännu inte är fullt inläst.
// Därför behöver vi en koll på när de är färdigt inlästa.
tracker.addImage(m_imageUp, 0);
m_imageDn = getImage(getDocumentBase(), m_sDown);
tracker.addImage(m_imageDn, 0);
m_imageIdle = getImage(getDocumentBase(), m_sIdle);
tracker.addImage(m_imageIdle, 0);
m_imageCurrent = getImage(getDocumentBase(), m_sIdle);
tracker.addImage(m_imageCurrent, 0);
try
{
// Vänta tills alla bilder är inlästa.
tracker.waitForAll();
m_bAllLoaded = !tracker.isErrorAny();
}
catch (InterruptedException e)
{
// Borde väl egentligen ha någon slags felhantering här.
}
m_bAllLoaded = true;
}
//--------------------------------------------------------------------------
// Generell ritfunktion. Observera att m_imageCurrent variabelns innehåll variarar
//--------------------------------------------------------------------------
public void paint(Graphics g)
{
g.drawImage(m_imageCurrent, 0, 0, null);
}
//--------------------------------------------------------------------------
// Vi har använt musknappen
//--------------------------------------------------------------------------
public boolean mouseDown(Event evt, int x, int y)
{
// Kom ihåg att knappen nu är nere
m_bStillDown = true;
// Och vi är på en knapp
m_bOnButton = true;
// Se till att rätt bild används
m_imageCurrent = m_imageDn;
repaint();
return true;
}
//--------------------------------------------------------------------------
// Vi har släppt musknappen
//--------------------------------------------------------------------------
public boolean mouseUp(Event evt, int x, int y)
{
// Vi måste kolla att vi finns på en knapp
if (m_bStillDown && m_bOnButton)
{
// Se till att rätt bild används
m_imageCurrent = m_imageUp;
// Se till bilden ritas om av paint funktionen
repaint();
// Förök hoppa till vald URL
// Men skapa för et URL
URL m_URLjump;
try
{
// Försöker skapa en URL
m_URLjump = new URL(getDocumentBase(), m_sURL);
}
catch (MalformedURLException e)
{
// Hit kommer vi om URL som getts inte är en URL.
// En diskret varning och gör ingenting för övrigt
getAppletContext().showStatus(e.toString());
m_bStillDown = false;
m_bOnButton = false;
return false;
}
// Hoppa till vald URL
getAppletContext().showDocument(m_URLjump);
}
// Knappen är alltså inte längre nedtryckt
m_bStillDown = false;
m_bOnButton = false;
return true;
}
//--------------------------------------------------------------------------
// Vi för muskmarkören över en knapp
//--------------------------------------------------------------------------
public boolean mouseEnter(Event evt, int x, int y)
{
m_bOnButton = true;
// Om vi hade tryckt på knappen, flyttat bort musmarkören
// och flyttar tillbaka vill jag att den skall minnas att
// den är nedtryckt
if (m_bStillDown)
m_imageCurrent = m_imageDn;
else
m_imageCurrent = m_imageUp;
getAppletContext().showStatus(m_sStatus);
repaint();
return true;
}
//--------------------------------------------------------------------------
// Vi för bort muskmarkören från en knapp
//--------------------------------------------------------------------------
public boolean mouseExit(Event evt, int x, int y)
{
// Vi finns alltså inte på en knapp mera
m_bOnButton = false;
m_imageCurrent = m_imageIdle;
getAppletContext().showStatus(null);
repaint();
return true;
}
}
© 1997 Anders Enges
Vasa institut för företagsekonomi och hotellverksamhet
Utbildningsenheten för företagsekonomi