Forord

 

 

GUI-programmering i Java er et meget stort emne (package javax.swing indeholder ca. 420 klasser), og det er kun få der har studeret samtlige grafiske elementer og deres muligheder til bunds. Undertegnede er (endnu) ikke en af dem, og indtil det punkt er nået vil afsnittet om GUI-programmering i DocJava, som alt andet, være ufuldstændigt. Der er adskillige steder hvor jeg direkte skriver at jeg endnu ikke har prøvet forskellige muligheder, og at der er visse af disse jeg end ikke ved, hvad præcist betyder. For læseren af DocJava vil der derfor være tale om selv at prøve forskellige muligheder, og selv udfylde de huller der er. Det er på sin vis en god måde at lære på, men den er uhensigtsmæssig tidskrævende.

 

1. Historien om Java's GUI

Historien om Java og dens GUI er til dels en historie om rod. Til gengæld kan man sige at rodet er opstået ved at man har forsøgt at foretage en række designmæssige forbedringer, i stedet for at stikke hovedet i busken og forfægte et dårligt design.

 

JDK 1.0

AWT Dette var den første version af Java, og dermed også den første version mht. GUI-programmering. Design-idéen var stærkt præget af variation vha. nedarvning og den var stiv og klodset at arbejde med. Alle klasser var samlet i package java.awt og subpackages af denne. AWT står for Abstract Windowing Toolkit (spøgefuldt kaldet Another Windowing Toolkit).
Når jeg engang får tid (ca. aldrig) vil jeg skrive om den; hvad der var godt og hvad der var skidt.

 

JDK 1.1

Under udarbejdelsen af den næste version af Java; havde man åbenbart opdaget design patterns. Pludselig var den grundlæggende design idé variation vha. komposition. Det ene GUI-orienterede design pattern efter det andet blev indarbejdet, og GUI-programmering "lettede" så at sige fra den antikverede paradigmiske platform den havde hvilet på med variantion vha. nedarvning.
Ny event-model Specielt var det event-modellen der nød godt af denne udvikling. Det betød at man skulle arbejde med events på en helt anderledes måde; hvilket var til stor irritation for mange - man følte det havde været spild af tid at lære den gamle event-model.

 

JDK 1.2

Denne version, som få dage efter sit release blev omdøbt til Java 2 (men stadig også hed JDK 1.2; hvilket var forvirrende), indeholdt ikke designmæssigt det store. Omvæltningen fra JDK 1.0 til JDK 1.1, havde irriteret mange, og det var spørgsmålet om Sun kunne blive ved med at ændre det hele en gang om året, ret meget længere, før det ville ende i totalt kaos, med udviklere der kun ville udvikle til specielle versioner af Java.
Swing JDK 1.2 indeholdt dog alligevel en del sprængstof. Man introducerede en ny API til GUI-programmering, med samme design-idé (de samme design patterns), men udformet som en udvidelse af JDK 1.1's. Navnet på denne udvidelse var Swing, og så gik Microsoft i felten. Microsoft følte sig truet af Sun, og det var nu et slagsmål om uhyrlige summer, i stedet for om godt design :-)
Hvis man vil programmerer applets er man derfor stadig henvist til JDK 1.1, og må undlade at bruge Swing. Det skyldes at Microsoft, med internet explore's ca. 80% af markedet for internet browsere, reelt blokkerer for JDK 1.2's anvendelse ved at nægte at understøtte Swing.
Det nye i Swing er Plugable Look & Feel (plaf). Det giver mulighed for give vinduer og grafiske elementer det look som disse forventes at have på den givne platform (f.eks. Windows, Motif og Mac).
Ud over dette supplerer Swing også med en række forstærkninger af de grafiske elementer.