Hem E-böcker Specialeffekter och spelutveckling i Java Länkar 

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 >>