Kapitel 5 JavaHelp

De fleste interaktive programmer har brug for en eller anden form for on-line-hjælp. Java-programmer er naturligvis ingen undtagelse. Til dette formål er JavaHelp-systemet blevet udviklet. Dette hjælpesystem er skræddersyet til Java-platformen, og det er således platformsuafhængigt. Systemet er bygget over Java Foundation Classes (JFC) og Swing, og kan således kun benyttes fra JDK 1.1 og fremefter.

Du læser en gammel bog

Den bog, du læser her, er fra 1998, og mange ting kan have ændret sig siden da.
Vi håber, at du stadig kan finde relevant information i den.
Hvis du vil læse aktuelle oplysninger om de avancerede dele af Java, anbefaler vi
bogen Core Java – Advanced Features

JavaHelp kan bruges til at give on-line-hjælp i følgende programmer:

  • Applikationer
  • JavaBeans
  • Applets

 

Selvom JavaHelp er en temmelig ny teknologi, er der allerede mange softwarehuse, der planlægger at udvikle værktøjer, der genererer hjælp i JavaHelp-format. I dette kapitel vil det imidlertid blive gennemgået, hvordan man laver JavaHelp uden brug af andre værktøjer.

 

JavaHelp set fra brugerens synspunkt

 

For at få en forståelse af JavaHelp-systemet og de krav og muligheder, der gør sig gældende ved brug af det, vil systemet først blive gennemgået fra brugerens synspunkt.

 

Figur 5.1 viser, hvordan skærmbilledet i en typisk JavaHelp-applikation ser ud. Som det ses, er billedet opdelt i tre dele.

 

 

Opbygningen af JavaHelp-vinduet.

 

 

 

 

 

 

 

 

 

 

 

Den venstre del af vinduet bruges til at vise en indholdsfortegnelse, mens den højre del af vinduet viser selve hjælpeteksten. Derudover er der en værktøjslinie, der indeholder genveje til kommandoer som søgning og lignende.

 

JavaHelp set fra programmørens synspunkt

 

Fra programmørens synspunkt er der andre ting end skærmbilledet, som er vigtige. Det drejer sig om, hvilken funktionalitet JavaHelp stiller til rådighed.

 

JavaHelp-systemet giver programmøren følgende muligheder:

  • Indholdsfortegnelse. Indholdsfortegnelsen er en liste – med underpunkter – så det er muligt at markere overskrifter i flere niveauer. Indholdsfortegnelsen vises på skærmbilledet og bliver automatisk synkroniseret med hjælpeteksten, så det emne, der vises, altid er markeret i indholdsfortegnelsen.
  • Stikordsregister. Med JavaHelp er det muligt at kombinere flere forskellige registre til et samlet stikordsregister.
  • Fritekstsøgning. Søgningen gør det muligt at søge på al tekst i hele hjælpesystemet. Hvis en søgning giver flere resultater, bliver disse prioriteret efter i hvor høj grad, de opfylder søgekriterierne.
  • Komprimering. JavaHelp understøtter Javas komprimeringsformat, JAR. Det betyder, at man kan samle alle sine hjælpefiler i en JAR-fil. Det er imidlertid ikke et krav, at filerne skal være komprimerede, og man kan derfor med fordel lade dem være ukomprimerede, mens de stadig er under udvikling.
  • Fleksibel brugergrænseflade. Det er muligt at inkludere JavaHelp-applikationer direkte i ens egen applikation. På den måde kan man få vist JavaHelp i en komponent i sin egen brugergrænseflade.

 

Opbygningen af et JavaHelp-system

 

For at JavaHelp-systemet skal fungere, skal der eksistere en mængde meta-data. Meta-data er data, der beskriver de virkelige data i systemet – hjælpeteksterne.

 

I JavaHelp består meta-datadelen af to elementer:

  • En HelpSet-fil
  • En map-fil.

 

HelpSet-filen bruges af applikationen til at opnå information om systemet. Det kan for eksempel dreje sig om referencer til map-filen, indholdsfortegnelse og indeks. Nedenstående er et simpelt eksempel på en HelpSet-fil.

 

<helpset>

<map>

<data>

jar:file:/d:/hjælp/info.jar!/map.map

</data>

 

 

</map>

 

<view>

<name>Indholdsfortegnelse</name>

<type format=”javax.javahelp.TOC.format”></type>

<data>

jar:file:/d:/hjælp/info.jar!indhold.xml

</data>

</view>

</helpset>

 

Som det ses, ligner syntaksen meget den syntaks, der er kendt fra HTML-filer. Det skyldes, at både HTML og JavaHelps filer bygger på XML-standarden.

Den første del af HelpSet-filen – map-delen – angiver, hvor man kan finde map-filen. I dette eksempel kan den findes i en JAR-fil ved navn d:\hjælp\info.jar. I denne fil ligger en fil ved navn map.map – det er denne fil, der skal bruges som map-fil i dette hjælpesystem.

Den næste del af filen – view-delen – angiver indholdsfortegnelsen. Kommandoen <type> angiver, hvilken type indholdsfortegnelse, der bruges. I dette simple eksempel er det den type, der følger med JavaHelp-systemet, men det er muligt at lave sin egen type.

Den anden del af de meta-data, der skal bruges af JavaHelp, er som nævnt map-filen. Denne fil indeholder de referencer, der bruges i applikationen, og navnet på den hjælpefil, de henviser til. Filen er opbygget som en af Javas property-filer. Det vil sige, at den består af en række nøgler tilknyttet en række værdier efter følgende syntaks:

Nøgle = værdi

En mapfil kan se således ud:

help.intro = introduktion/side1.html

help.tak = introduktion/taktil.html

tutor.javahelp = lærebog/javahelp/side1.html

Formålet med at have denne mapfil er, at programmøren i sit program kun behøver at angive nøglen for at referere til et hjælpeemne. Når hjælpesystemet skrives, er forfatteren fri til at navngive dokumenterne efter behag. Blot skal hvert emne i mapfilen have tilknyttet et dokument.

JavaHelp-systemet består af andet og mere end meta-data. Af hensyn til systemets funktioner til visning af indholdsfortegnelse og stikord, skal der genereres filer, der indeholder disse informationer. Den egentlige hjælpetekst skal naturligvis også skrives. Det betyder, at selve hjælpesystemet kommer til at bestå af følgende filer:

  • Hjælpeemnerne
  • Indholdsfortegnelse
  • Stikordsregister
  • Indeks til brug ved fritekstsøgning.

En tekst, der udgør hjælpeemnerne, skrives i HTML efter HTML3.2-standarden. Hvis man vil have yderligere funktionalitet, kan man få det ved at inkludere appletter.

 

 

 

Den fil, der indeholder indholdsfortegnelsen, skrives i XML-format. Nedenstående eksempel viser en simpel indholdsfortegnelse:

 

<toc>

<tocitem id=help.intro>Introduktion

<tocitem id=help.tak>Tak til…</tocitem>

</tocitem>

<tocitem id=tutor.index>Lærebøger

<tocitem id=tutor.javahelp>JavaHelp</tocitem>

</tocitem>

</toc>

 

Som det ses, angives som ID de navne, der blev defineret i map-filen. Derudover ses det af eksemplet, at man kan lave en hierakisk indholdsfortegnelse ved at lægge flere <tocitem>-kommandoer inden i hinanden.

 

Stikordsregistret skrives på næsten sammen måde som indholdsfortegnelsen.

 

<index>

<indexitem>JavaHjælp, se ‘JavaHelp’</indexitem>

<indexitem id=tutor.javahelp>JavaHelp

<indexitem id=tutor.javahelp>Generelt</indexitem>

<indexitem id.tutor.javahelp.download>Download af</indexitem>

</indexitem>

</index>

 

Igen er det muligt at skabe et hierarki ved at lægge flere <indexitem>-kommandoer inden i hinanden. Det ses også, at man kan skrive almindelig tekst i stikordsregistret ved at undlade id-parametret. Dette kan blandt andet – som i dette eksempel – bruges til at lave henvisninger til andre stikord.

Søgedatabasen skal man ikke selv lave. Inkluderet i JavaHelp-pakken fra Sun er et program, der genererer denne.

Kald af hjælpesystemet

Når man har lavet hjælpesystemet, er den næste opgave at kalde det. Det kan gøres ved hjælp af nedenstående kode:

import javax.javahelp.*;

import java.net.*;

import java.io.*;

public class Simpel

{

public Simpel()

{

HelpSet hs = null;

try

{

hs = new HelpSet (ClassLoader.getBaseClassLoader(), new URL(“file:/h:/tf/java/eksempler/javahelp/avanceret/Avanceret.hs”));

 

 

}

catch (MalformedURLException mue)

{

System.err.println (mue.toString());

}

catch (IOException ioe)

{

System.err.println (ioe.toString());

}

 

JavaHelp jh = hs.createJavaHelp();

 

jh.setVisible(true);

}

 

public static final void main(String args[])

{

Simpel me = new Simpel();

}

}

 

Efter denne overordnede gennemgang af hjælpesystemet, vil de enkelte dele i det følgende blive gennemgået grundigere.

 

Organisering af en hjælpefil

 

JavaHelp-systemet et koncentreret om filer. Dette kan være filer i konventionel forstand eller filer på et netværk eller filer, der bliver skrevet dynamisk af en server. Hvert emne i hjælpesystemet udgøres af en HTML-fil. Som nævnt tidligere kan disse filer samles i en JAR-fil. Hvis ens hjælpesystem er stort, er det en god idé at dele det i flere JAR-filer. Her kan man med fordel samle de dokumenter, der har konceptuel sammenhæng, i én JAR-fil.

 

I den forbindelse skal man være opmærksom på, hvordan man skriver sine links i HTML-dokumenterne. Hvis man bruger absolutte henvisninger, vil de ikke være gyldige i JAR-filen. Det vil sige, at man skal bruge

 

<A HREF = ../del2/side1.html>Næste emne</A>

 

i stedet for

 

<A HREF = c:/hjælp/del2/side1.html>Næste emne</A>.

Også meta-datafilerne kan lægges i JAR-filer. I strukturen bør disse ligge i roden af JAR-filen. Hvis en meta-datafil er opdelt i flere filer – eksempelvis søgedatabasen – kan disse dog lægges i underbiblioteker til JAR-filens rodbibliotek.

Ligeledes bør selve HelpSet-filen og mapfilen også lægges i roden af biblioteksstrukturen i JAR-filen.

Selvom det umiddelbart synes bedst altid at lægge hele sit hjælpesystem i én samlet JAR-fil, er der også ulemper ved det. Hvis man for eksempel gerne vil installere hjælpesystemet uafhængigt at selve applikationen, kan man få behov for at opdatere HelpSet-filen, så dens angivelser af lokationer er korrekte. Dette kan man ikke – i hvert fald ikke uden videre – hvis HelpSet-filen er

 

inkluderet i JAR-pakken. Derudover mister man også muligheden for at opdatere HelpSet-filen, hvis man for eksempel vil tilføje yderligere informationer i form af JAR-filer med flere emnefiler.

 

JAR-filer

 

Hvis man vælger at bruge JAR-filer i sit system, skal man bruge programmet jar til at lave dem. Dette program kommer med JDK og findes i installationens bin\-bibliotek. JAR-kommandoen har følgende syntaks, der minder meget om syntaks for Unix-programmet tar:

 

jar –kommandoer [-parametre] [jar-fil] [manifest-fil] filer

 

jar-programmet accepterer følgende kommandoer:

 

C Opret en ny JAR-fil.
t Vis indholdet af en JAR-fil.
x Dekomprimér en eller flere filer fra JAR-pakken. Hvis ingen filnavne angives, dekomprimeres alle filer.

 

Derudover kan man angive nedenstående parametre:

 

v Vis yderligere udskrifter.
f Angiver navnet på JAR-filen.
m Inkludér manifest-information.
0 Undlad at komprimere. Dette parameter skal anvendes, hvis man vil lave JAR-filer, der kan inkluderes i en classpath.
M Undlad at bruge manifest-fil.

 

Hvis man eksempelvis vil lægge alle filerne i et bibliotek i JAR-filen minjar.jar, skriver man

jar cf minjar.jar *.*

 

jar: angiver, at det er jar-protokollen, der skal anvendes. Dette svarer til, at man skriver http: for at angive, at det er http-protokollen, der skal anvendes. Dernæst angives navnet på den JAR-fil, den pågældende fil er en del af. Herefter angives et udråbstegn (!), der bruges til at separere navnet på JAR-filen fra navnet på den fil, man vil benytte. Navnet, på den fil man vil benytte, angives som det sidste i en URL efter jar-protokollen.

 

Vil man eksempelvis have adgang til filen minfil.txt, der er en del af JAR-pakken filer.jar skriver man

 

jar:file:/c:/filer.jar!minfil.txt

 

Navnet på JAR-filen behøver ikke at være et filnavn. Man kan også benytte URL’er fra andre protokoller – typisk vil http blive benyttet.

 

HelpSet-filen

 

Når ens applikation starter JavaHelp-systemet, er det første, der sker, at HelpSet-filen bliver indlæst. Denne fil indeholder den information, der definerer selve hjælpesystemet. Hjælpesystemet består af

 

  • Map-filer
  • Indholdsfortegnelse
  • Stikordsregister
  • Søgedatabase
  • Hjælpeteksterne
  • Information om visning af de forskellige elementer
  • Hjælpesystemets titel
  • Et start-ID, der angiver hvilket emne, som skal vises, hvis der ikke angives et emne.

HelpSet-filer har normalt filtypen .hs.

Formatet af HelpSet-filen er bygget over XML-standarden. HelpSet-syntaksen definerer følgende kommandoer:

  • <helpset>. HelpSet-filen indledes med denne kommando. Alle nedenstående kommandoer kan skrives inden i <helpset>-kommandoen.
  • <title> angiver hjælpesystemets titel.
  • <homeID> angiver navnet på det emne, der skal vises, hvis hjælpesystemet startes uden angivelse af et emne.
  • <map> bruges til at angive navnene på hjælpesystemets map-filer. <map>-kommandoen kan indeholde følgende kommando:
    • <data> angiver en URL til en mapfil.  Hvis hjælpesystemet består af flere mapfiler, kan disse angives ved at bruge flere <data>-kommandoer.
  • <view> bruges til at definere de forskellige oversigter i JavaHelp. Kommandoen kan indeholde følgende kommandoer:
    • <name> angiver navnet på oversigten.
    • <label> angiver det navn, der vises på fanen i brugergrænsefladen.
    • <type> angiver stien til den klasse, der skal bruges som navigator.
    • <engine> angiver stien til den klasse, der skal bruges som søgemaskine.
    • <data> angiver stien til de data, navigatorklassen skal bruge.

Nedenstående eksempel viser, hvordan en HelpSet-fil kan se ud:

<?xml version=’1.0′ encoding=’ISO-8859-1′ standalone=’yes’ ?>

<helpset>

<title>Avanceret Java-programmering</title>

<homeID>velkommen</homeID>

<map>

<data>oversigt.map</data>

</map>

<view>

<name>Stikordsregister</name>

<label>Stikord</label>

 

<type>javax.javahelp.JHelpIndexNavigator</type>

<data>index.xml</data>

</view>

<view>

<name>Indholdsfortegnelse</name>

<label>Indhold</label>

<type>javax.javahelp.JHelpTOCNavigator</type>

<data>indhold.xml</data>

</view>

<view>

<name>Søgning</name>

<label>Søgning</label>

<type>javax.javahelp.JHelpSearchNavigator</type>

<engine>javax.javahelp.BasicHelpSearch</engine>

<data>HelpIndex</data>

</view>

</helpset>

 

Mapfilen

 

Udseendet af mapfilen er beskrevet tidligere i kapitlet. Når man skriver sin mapfil, skal man blot være opmærksom på, at udseendet af filen afhænger af, om man vil inkludere mapfilen i den endelige JAR-fil eller ej.

 

Hvis filen eksempelvis indeholder en række relative referencer som nedenstående fil, vil disse blive bibeholdt, når der oprettes en JAR-fil med hjælpefilerne og mapfilen.

 

welcome=forord/forord.html

swing=kapitel1/swingeksempler.html

eks1_1=kapitel1/eksempel1-1.html

eks1_2=kapitel1/eksempel1-2.html

.

.

.

 

Det vil sige, at de relative henvisninger er gyldige, så længe både mapfilen og hjælpeteksterne ligger i en JAR-fil. Vælger man derimod at lægge mapfilen udenfor den JAR-fil, der indeholder hjælpeteksterne, skal man i mapfilen angive placeringen af hjælpeteksterne efter jar-protokollen. Det vil sige, at mapfilen kommer til at se således ud:

 

welcome=jar:file:/c:/java.jar!forord/forord.html

swing=jar:file:/c:/java.jar!swingeksempler.html

eks1_1=jar:file:/c:/java.jar!eksempel1-1.html

eks1_2=jar:file:/c:/java.jar!eksempel1-2.html

.

.

.

 

Indholdsfortegnelsen

 

Tidligere i kapitlet er et eksempel på en simpel indholdsfortegnelse blevet gennemgået. Derfor vil dette afsnit koncentrere sig om en gennemgang af de kommandoer, der kan bruges i indholdsfortegnelsen.

 

  • <toc> indleder selve filen. Kommandoen kan indeholde følgende kommando:
  • <tocitem> angiver et element i indholdsfortegnelsen. Hvis man angiver flere <tocitem>-kommandoer inden i hinanden, opretter man en hierakisk indholdsfortegnelse med flere niveauer.
    • id-parametret angiver hvilken URL, der skal tilknyttes det pågældende punkt i indholdsfortegnelsen. ID’et angives med en henvisning til et af punkterne i mapfilen.

 

Stikordsregistret

 

Stikordsregistret defineres også ved hjælp af XML-sproget. Den fil, der definerer stikordsregistret, kan indeholde følgende kommandoer:

 

  • <index> indleder filen. Denne kommando kan indeholde nedenstående kommando.
  • <indexitem> angiver et element i stikordsregistret. Ved at sætte flere <indexitem>-kommandoer inden i hinanden kan man lave et stikordsregister med flere niveauer.
    • id-parametret angiver, hvilken hjælpetekst der skal tilknyttes elementet. Dette angives som en af nøglerne fra mapfilen.

 

Søgedatabasen

 

I modsætning til de andre filer i JavaHelp-systemet er søgedatabasen ikke skrevet i XML. Den er en binær fil, og det er derfor ikke muligt uden videre at skrive den manuelt. Derfor følger der med JavaHelp-pakken et program, der kan generere søgedatabaser. Dette program hedder jhindexer og ligger i installationens bin\-bibliotek.

 

Implementering af JavaHelp

 

Tidligere i kapitlet blev der vist et kort eksempel på en implementering af et JavaHelp-system. I dette afsnit vil implementeringen af JavaHelp blive beskrevet yderligere.

 

Eksemplet viser de tre punkter, der indgår i at vise JavaHelp.

 

  • Opret et objekt af HelpSet-klassen.
  • Opret på baggrund af HelpSet-objektet et objekt af JavaHelp-klassen.
  • Vis JavaHelp.

 

HelpSet-objektet oprettes som alle andre objekter, og dens constructor tager to parametre. Det første er en classloader. Man kan få en reference til den

 

aktuelle classloader gennem getBaseClassLoader-metoden, der er en statisk metode i ClassLoader-klassen. Det andet parameter er en reference til en URL, der refererer til HelpSet-filen.

 

HelpSet-klassen er defineret således:

 

public class HelpSet extends java.lang.Object

{

public javax.javahelp.HelpSet(java.lang.ClassLoader,java.net.URL);

public void add(javax.javahelp.HelpSet);

public void addHelpSetListener(javax.javahelp.event.HelpSetListener);

public javax.javahelp.JavaHelp createJavaHelp();

public static java.net.URL findHelpSet(java.lang.ClassLoader, java.lang.String);

public static java.net.URL findHelpSet(java.lang.ClassLoader, java.lang.String, java.lang.String, java.util.Locale);

public static java.net.URL findHelpSet(java.lang.ClassLoader, java.lang.String, java.util.Locale);

public java.net.URL getHelpSetURL();

public java.util.Enumeration getHelpSets();

public java.lang.String getHomeID();

public java.lang.ClassLoader getLoader();

public javax.javahelp.Map getMap();

public javax.javahelp.NavigatorInfo getNavigatorInfo()[];

public javax.javahelp.NavigatorInfo getNavigatorInfo(java.lang.String);

public java.lang.String getTitle();

public boolean remove(javax.javahelp.HelpSet);

public void removeHelpSetListener(javax.javahelp.event.HelpSetListener);

public void setHomeID(java.lang.String);

public void setMap(javax.javahelp.Map);

public void setTitle(java.lang.String);

}

 

Som det ses af ovenstående signatur, kan man tilføje listeners til hjælpesystemet. Dette gøres ved at oprette et objekt af klassen javax.javahelp.event.HelpSetListener. Dette er i tråd med Javas generelle event-håndtering i eksempelvis AWT og Swing. Der opstår blandt andet events, når der indlæses et nyt hjælpesystem, og når et hjælpesystem fjernes.

 

Derudover indeholder klassen funktioner, der kan hjælpe med at finde et hjælpesystem. Dette sker på baggrund af regionale indstillinger gemt i et Locale-objekt. Hvordan Locale-objekter oprettes og bruges bliver beskrevet senere i denne bog.

 

Klassen indeholder også metoder, der arbejder på HelpSet-filen. Det drejer sig dels om funktioner, der kan hente de oplysninger, der står i filen

 

, men også metoder, der kan ændre de indstillinger, der blev indlæst fra filen.

 

Klassen indeholder også en funktion, der på baggrund af det aktuelle hjælpesystem kan oprette et JavaHelp-objekt. Det er funktionen createJavaHelp.

 

JavaHelp-objektet kan blandt andet bruges til at vise selve hjælpesystemet og også til at vise enkelte emner. JavaHelp er et interface med følgende signatur:

 

public abstract interface JavaHelp extends java.lang.Object {

public abstract java.lang.String getCurrentID();

public abstract java.lang.String getCurrentView();

public abstract javax.javahelp.HelpSet getHelpSet();

public abstract java.net.URL getURL();

public abstract boolean isViewDisplayed();

public abstract boolean isVisible();

public abstract void setCurrentID(java.lang.String);

public abstract void setCurrentView(java.lang.String);

public abstract void setURL(java.net.URL);

public abstract void setViewDisplayed(boolean);

public abstract void setVisible(boolean);

}

 

Metoden setVisible bruges til at vise selve JavaHelp-systemet. Derudover kan man ved hjælp af setCurrentID-metoden bestemme, hvilket emne der skal vises. På denne måde kan man lave kontekstafhængig hjælp. Det vil sige, at den hjælp, brugeren får, når vedkommende klikker på hjælpeknappen, afhænger af, hvor i programmet, brugeren befinder sig. Metoden setCurrentID tager et ID som parameter. Det vil sige, at man skal angive en af nøglerne fra mapfilen. Hvis man hellere vil angive navnet på selve den fil, der skal vises, skal man bruge metoden setURL.

 

Som nævnt i begyndelsen af kapitlet bygger JavaHelp blandt andet på Swing. Det vil sige, at det er muligt at bruge Swings metoder til at tilpasse udseendet af hjælpesystemet til brugerens operativsystem. Det er klassen JHelp, der håndterer udseendet af hjælpesystemet. JHelp har følgende signatur:

 

public class JHelp extends java.awt.swing.JComponent implements javax.javahelp.event.HelpSetListener

{

public javax.javahelp.JHelp();

public javax.javahelp.JHelp(javax.javahelp.HelpSet);

public javax.javahelp.JHelp(javax.javahelp.HelpSet,javax.javahelp.JHelpViewer,boolean);

public javax.javahelp.JHelp(javax.javahelp.HelpSet,boolean);

 

public void addHelpNavigator(javax.javahelp.JHelpNavigator);

public javax.javahelp.JHelpViewer getContentViewer();

public javax.javahelp.JHelpNavigator getCurrentNavigator();

 

public java.util.Enumeration getHelpNavigators();

public java.net.URL getHelpSetURL();

public javax.javahelp.HelpHistory getHistory();

public javax.javahelp.HelpModel getModel();

public javax.javahelp.plaf.HelpUI getUI();

public java.lang.String getUIClassID();

public void helpSetAdded(javax.javahelp.event.HelpSetEvent);

public void helpSetRemoved(javax.javahelp.event.HelpSetEvent);

public boolean isNavigatorDisplayed();

public void setCurrentNavigator(javax.javahelp.JHelpNavigator);

public void setHelpSetSpec(java.lang.String);

public void setHistory(javax.javahelp.HelpHistory);

public void setModel(javax.javahelp.HelpModel);

public void setNavigatorDisplayed(boolean);

public void setUI(javax.javahelp.plaf.HelpUI);

public void updateUI();

public void visitID(java.lang.String);

public void visitURL(java.net.URL);

}

 

Klassen indeholder både funktioner, der kan bruges til at se, hvilket udseende brugergrænsefladen har, og metoder, der ændrer den. Det drejer sig om henholdsvis metoderne getIU og setUI. Selvom disse som nævnt afspejler Swings funktionalitet, benytter de ikke Swings klasser, men i stedet en klasse, der er specielt skrevet til JavaHelp-systemet. Det drejer sig om klassen javax.javahelp.plaf.HelpUI, der nedarver fra java.awt.swing.plaf.ComponentUI.

JHelp-klassen giver også mulighed for event-håndtering, ligesom det er muligt at ændre de komponenter, der vises i JavaHelps brugergrænseflade.

Sammenfatning

I dette kapitel er det blevet beskrevet, hvordan man kan bruge JavaHelp til at skrive on-line-hjælp til sin Java-applikation. Fordelene ved dette er blandt andet platformsuafhængighed og let integration med Java-programmet. Hjælpeteksterne kan skrives i HTML, mens de filer, der indeholder information om selve hjælpesystemet – indholdsfortegnelse, stikordsregister og lignende – skal skrives i XML.

For at tilgå hjælpesystemet fra en Java-applikation skal man bruge de klasser, der ligger i pakken javax.javahelp.

FAQ

Kan JavaHelp blive brugt af programmer, der ikke er skrevet i Java?

Ja. Ved at skrive en HelpServer kan man bruge JavaHelp-systemet fra eksempelvis C++. Det gør, at man kan bruge det samme hjælpesystem i alle sine programmer, selvom de skrives i forskellige programmeringssprog.

Kan man bruge JavaScript i hjælpeteksterne?

 

På nuværende tidspunkt er kun Java-appletter understøttet af JavaHelps HTML-fremviser. Sun udelukker dog ikke, at det på et senere tidspunkt vil være muligt at erstatte HTML-fremviseren med en mere avanceret udgave.

Du læser en gammel bog

Den bog, du læser her, er fra 1998, og mange ting kan have ændret sig siden da.
Vi håber, at du stadig kan finde relevant information i den.
Hvis du vil læse aktuelle oplysninger om de avancerede dele af Java, anbefaler vi
bogen Core Java – Advanced Features

Comments are closed.