Specialeffekter och spelutveckling
i Java(TM) - Länkar
av Anibal Wainstein
6.1 Länkar
Det
är nu som applets kan göras till något mer
än bara vackra animationer. Länkfunktionerna hos
applets gör dem till nyttiga navigationsverktyg. Tyvärr
så har processen för att exekvera en länk
gjorts onödigt komplicerat. Här kommer vi dock att
utveckla en nyttig metod för att förenkla hanteringen
av länkar.
6.1.1 Att exekvera
länkar (URL och AppletContext klasserna)
Klassen
som man använder för att lagra länkar heter
URL. Den finns under java.net paketet och måste alltså
inkluderas genom att lägga till "import java.ner.*;"
längst upp i appletfilen. Den här klassen kan användas
till mycket som t.ex. att öppna en kommunikationskanal
till en fil och ändra sida i web tittaren. Det är
det senare som vi ska använda i våra applets. Tyvärr
är det också det enda som URL kan användas
till när man gör applets. Applets kan nämligen
inte öppna kommunikationskanaler till godtyckliga adresser
på Internet. En applet får bara läsa
filer från samma server som den laddas ner från.
Java
applikationer kan däremot göra nästan vad de
vill. Anledningen till detta är överdrivna säkerhetsåtgärder
som har till syfte att förhindra Java applets att göra
ofog hos hemsidebesökarnas datorer. Du kan skapa en URL
på följande sätt:
URL link=null;
try {link=new URL("http://www.passagen.se/");}
catch (MalformedURLException ex)
{
System.out.println("Adressen är felskriven!");
};
Vad
skall det här betyda, frågar du? Tyvärr är
det så att man inte kan skapa en URL hur som helst.
Den kan nämligen slänga en MalformedURLException,
som betyder att adressen har definerats fel. Detta händer
när alla delar av adressen inte har tagits med. Följande
adresser kommer att ge en MalformedURLException:
Felaktig
URL : |
Rätt
URL : |
|
|
passagen |
http://www.passagen.com/ |
www.passagen.se |
http://www.passagen.se/ |
minfil.html |
http://www.dinserver.se/minfil.html |
c:\minhemsida\minfil.html |
file:///c:/minhemsida/minfil.html |
javahuset@passagen.se |
mailto:javahuset@passagen.se |
Som
du ser så finns det tre typer av länkar du kan
ha. En Internet adress, en adress till en fil på hårddisken
och en länk som startar upp emailfunktionen i web tittaren
och låter dig skriva ett brev. Internetadresser fungerar
bara när du är uppkopplad och filadresser fungerar
både när du testar appleten på hårddisken
och på servern. Observera dock att filadresser pekar
på filer i DIN hårddisk. Det betyder att om en
besökare kommer in på din hemsida och klickar på
en sådan länk, så är nog sannolikheten
ganska stor att filen inte finns på HANS hårddisk.
Filadresser skall du bara använda om du skall sätta
upp en lokal hemsida på din hårddisk, eller på
ett LAN-nätverk. En annan sak som du kanske märker
här ovan är att det finns inget stöd för
relativa länkar!
Nu när länken är skapad, så kan man exekvera
länken genom att använda oss av AppletContext klassen.
Den här klassen ger appleten möjligheten att kunna
interaktera med sidan som den har bakats in i. Vi kan hämta
en AppletContext-objekt för appleten genom att använda
Applet klassens getAppletContext() metod. För att exekvera
länken som vi skapade i det föregående exemplet
så kan du nu göra så här:
AppletContext appletcontrol=getAppletContext();
appletcontrol.showDocument(link);
Det
är metoden showDocument() som används för att
öppna en ny adress och den kräver i sin tur en URL-objekt.
Det finns ännu en showDocument() metod som man kan använda
för att öppna en adress på en specifierad
målram (target frame). Detta måste användas
när man gör menyer, så att de fungerar med
hemsidor med multipla ramar (multiple frames). Då kan
man skriva så här istället:
appletcontrol.showDocument(link,"minram");
Det
andra argumentet i showDocument() skall vara en sträng
med namnet på ramen. För att sammanfatta allt som
vi har lärt oss om länkar och för att förenkla
vårt arbete, så skall vi skapa en metod, gotoURL(),
som tar en länk och en målram som argument och
exekverar dem:
public void gotoURL(String address, String target)
{
URL link=null;
AppletContext appletcontrol=getAppletContext();
try {link=new URL(address);}
catch (MalformedURLException ex)
{
showStatus("FELSKRIVEN ADRESS."+address);
};
if (link!=null)
{
if (target!=null && target.length()>0) appletcontrol.showDocument(link,target);
else appletcontrol.showDocument(link);
}
}
Metoden
gotoURL() tar en adress och en målram ("target"),
i form av två strängar. Den skapar adressen, undersöker
om det inte var några fel på adressen (link!=null)
och undersöker om målramen är giltig (target!=null
&& target.length()>0), innan den exekverar länken. Om
du inte vill använda målramen som länk, så
kan du bara specifiera värdet null på "target"
argumentet. Observera att showDocument() känner igen
standard HTML orden "_self", "_parent",
"_top" och "_blank" för målramar.
Den här metoden skall du framöver klistra in i alla
applets som använder länkar. Dessutom får
du inte glömma att skriva "import java.net.*;"
på alla applets som använder länkar.
Nästa sida >>
|