Wat is een grafische gebruikersinterface (GUI)

advertisement
theorie
Wat is een grafische gebruikersinterface (GUI)?
GUI is een Engelse afkorting voor Graphical User Interface, oftewel
grafische gebruikersinterface.
Het is de term voor het ‘bedieningspaneel’ van een computerprogramma.
Het vormt de brug tussen de computer en de gebruiker. Het maakt
gebruik van grafische elementen die het gebruik van het programma
moeten vergemakkelijken. Grafische elementen zijn o.a. menu’s,
knoppen, selectielijsten, tekstvelden, aanvinkboxjes (checkboxes) en
afbeeldingen.
Waarom een GUI?
Een GUI heeft de volgende functies, in willekeurige volgorde:
•
•
•
•
Een grafisch overzicht geven van de beschikbare programmafuncties
Het bestuurbaar/bedienbaar maken van een applicatie
Gebruikersinput vereenvoudigen
Output weergeven
Waaruit is een GUI opgebouwd?
De onderdelen van de Java−GUI vormen een complexe klassenhierarchie,
zoals je in de onderstaande figuur kunt zien.
1 van 8
theorie
Figuur 1
Op het op één na hoogste niveau vind je de belangrijkste.
Component De Component ‘s zijn de ”echte” dingen, die je ook als een soor fysiek object
ziet. De klasse Component heeft diverse subklassen als Button, Checkbox,
TextFiel, Textarea, Label enz.
De rest is nodig om ze te maken (kleur, tekst, positie, …).
De Component’s vormen ook nog een grote klasse.
Container
Een container behoort tot de klasse Component en kan weer andere dingen
‘in zich’ houden. Componenten worden gevat in een container dus containers
bevatten componenten.
2 van 8
theorie
Applet
Layout
manager
Een applet is een voorbeeld van een container maar ook een frame zoals je in
de imageviewer hebt gezien.
Iedere container heeft een layoutmanager die bepaalt hoe de verschillende
componenten ten opzichte van elkaar worden gepositioneerd.
Er zijn verschillende manieren om iets zichtbaar te maken zoals je kunt zien
in de bovenstaande tekening. Dialogen worden bijvoorbeeld gebruikt om de
gebruiker een bericht mee te geven. Applets openen in de browser en kunnen
via html pagina’s zichtbaar worden gemaakt op het internet.
Window
Een Window, ook een soort Container, is een gebied zonder menu of
titelbalk, waarop componen ten geplaatst kunnen worden. Het wordt
voornamelijk gebruikt voor pop-up berichten.
Frame
Een Frame is in principe een Window, maar dan met alle gebruikelijke
eigenschappen van een zelfstandig venster: titelbalk, randen,
minimimaliseerr/maximaliseer/afsluit-knoppen rechts bovenin.
Verder kan een Frame een aangepaste muiscursor hebben, eventueel
een menubalk en een icoon in de titelbalk.
Een Frame wordt doorgaans gebruikt voor applicaties (in tegenstelling
tot applets).
AWT/Swing Meestal zullen we gebruik maken van de nieuwste grafische omgeving
van Java, Swing, gebruik zullen maken en niet de wat oudere en meer
beperkte AWT (Abstract Window Toolkit).
Elke grafische applicatie met Swing is een extensie van een JFrame of een
Japplet.
Swing is, net als AWT, een GUI-toolkit en onderdeel van de Java Foundation
Classes (JFC). Het is geschreven in pure Java-code, waardoor Swingapplicaties er hetzelfde uitzien op elk platform. Swing wordt beschouwd als de
opvolger van AWT, maar eerder als een soort uitbreiding dan een vervanger.
Immers, Swing’s JComponent klasse erft (extends) alle eigenschappen van
AWT’s Component klasse.
Om onderscheid te maken tussen de twee toolkits, worden Swing’s
componenten voorafgegaan door een ‘J’, als in: JButton, JTextField, etc.
Om iets zichtbaar te kunnen maken moet je een aantal dingen doen:
•
•
•
Je moet het object maken (met new).
Als je de grootte niet bepaalt, blijft het een heel klein venster.
Met onzichtbare vensters kun je echt heel weinig.
Subklasse
In Java worden klassen afgeleid van weer andere klassen.
De afgeleide klassen worden subklassen (derived classes) genoemd.
Superklasse Zij zijn afgeleid van een andere (super)klasse.
De subklasse bevat vaak specifieke methoden voor de desbetreffende klasse.
Wanneer vervoermiddel() de superklasse is, kunnen bijvoorbeeld auto() en
fiets() subklassen zijn.
De subklasse erft alle velden en methoden van de bijbehorende superklasse.
In de leertaken Dialogen is Jframe de superklasse van Dialoogvenster.
Dat betekent dat Dialoogvenster constructormethoden van JFrame kan
gebruiken. Constructormethoden van Jframe vind je in figuur 3.
3 van 8
theorie
Super()
Een verwijzing naar een constructor van de superklasse gebeurt door
het keywoord super() of super(parameterlijst) waarin de parameterlijst
verwijst naar de parameters in een constructormethode van de
superklasse.
Overerving Het bovenstaande wordt overerving genoemd.
Overerving betekent dus dat nieuwe klassen worden gebaseerd op
andere, bestaande klassen. Dit leidt tot hergebruik van code en brengt
klassen met elkaar in verband.
Dialog
Een Dialog is een pop-up dialoogvenster, onderdeel van Window, dat
berichten (in de vorm van waarschuwingen, vragen of foutmeldingen)
kan weergeven en de gebruiker kan vragen om actie (bevestiging of
een keuze).
Een Dialog kan modal zijn, dat wil zeggen dat de Dialog op de
voorgrond blijft staan totdat de gebruiker actie onderneemt.
Ondertussen kan de gebruiker geen andere vensters selecteren of
aanklikken. Deze functionaliteit is in te bouwen met de
programmeerinstructie setModal.
FileDialog
Een FileDialog is een voorgedefiniëerde Dialog, bestemd voor interactie
met het bestandssysteem van de computer. Het kan een Open of
Opslaan-functie hebben (al naar gelang de wens van de programmeur).
FileDialogs worden in principe alleen gebruikt in applicaties.
Applets kunnen door ingebouwde veiligheidsmaatregelen
communiceren met het bestandsssysteem van de computer.
Menu
niet
Een Menu is te vinden bovenaan een applicatievenster en huisvest
diverse opties. Het bestaat uit een balk met categorieën, met daaronder
een lijst specifieke opties, de MenuItems, al dan niet van elkaar
gescheiden door een lijn (Separator).
Optioneel kan een Menu een tear-off mogelijkheid bevatten. Dat wil
zeggen dat het menu weg te slepen is van zijn oorspronkelijke locatie
en overal neergezet kan worden. Dit wordt echter niet door elk platform
ondersteund.
Eveneens kan een Menu gebruik maken van keyboard short-cuts,
oftewel sneltoetsen.
figuur 2
4 van 8
theorie
In het programma Dialoogvenster_1.java bevat de titelbalk van het menu
geen tekst. Het is handig om een titel mee te geven aan een
dialoogscherm.
De klasse Dialoogvenster is een uitbreiding van de klasse JFrame. In de
klasse Dialoogvenster staat geen aparte methode gedefinieerd welke een
titelbalk kan plaatsen. Dat hoeft ook niet want in Java kan worden
verwezen naar de superklasse, in dit geval Jframe.
Figuur 3: Constructor summary
Overloading In figuur 3 zie je dat er verschillende constructormethoden jet dezelfde
naam Jframe() bestaan.
Het naast elkaar bestaan vann methoden met dezelfde naam maar met
verschillende parameters (zie bovenstaande figuur) heet overloading.
Nog meer componenten…………….
Canvas
De Canvas klasse is slechts een leeg gebied waarop grafische
elementen of speciale componenten geplaatst kunnen worden, zoals
afbeeldingen en getekende vormen en lijnen, die eventueel klikbaar
gemaakt kunnen worden door de muisklikken te registreren en te
koppelen aan een event.
Panel
Een Panel is een soort Container, een rechthoekig gebied waar andere
componenten in geplaatst kunnen worden. Het is de grafische
bouwsteen van een applet. Componenten zoals bijvoorbeeld Buttons
worden gepositioneerd op het Panel, welke weer getoond wordt door de
browser of applet viewer.
Label
Wellicht de meest eenvoudige component. Het doet niets meer dan een
regel tekst op het scherm zetten, bijvoorbeeld voor de beschrijving van
een tekstveld of keuzeknop.
De Label component heeft enkele attributen die aanpasbaar zijn:
lettertype (Font), lettergrootte en de kleur.
TextComponent: TextField en TextArea
De TextComponent klasse huisvest twee componenten: TextField en
TextArea. Beiden zijn bedoeld voor gebruikersinvoer en -uitvoer.
5 van 8
theorie
Met een setEditable instructie kun je aangeven of het tekstveld bestemd
is voor invoer of uitvoer.
TextField kan maximaal één regel tekst aan invoer verwerken of tonen,
terwijl TextArea meerdere regels kan verwerken of tonen.
Deze componenten hebben o.a. de aanpasbare attributen lettertype,
lettergrootte en kleur.
De methode main
public static void main(String args [ ] ){
}
De main methode is een methode die ervoor zorgt dat elk java
programma start.
De methode is ‘public’ omdat het toegankelijk moet zijn voor de Java
Virtual Machine om de executie van een programma te starten. De Java
Virtual Machine is de toepassing die het java programma uitvoert.
De methode is ‘static’ omdat er geen instantie nodig is voor de executie
van een programma. Voor iedere andere methode aanroep is een
objectinstantie noodzakelijk.
Een klasse zou niet gerund kunnen worden zonder de creatie van een
objectinstantie van die klasse als de main methode niet static was.
De methode main is void. Wanneer de main methode is uitgevoerd,
stopt het programma. Om die reden kan de main methode geen data
teruggeven. Een void methode heeft geen terugkeer (return) waarde.
De parameter String args[ ] : de gebruiker mag parameters toevoegen.
This
Binnen een methode of een constructormethode, verwijst het woord ‘this’
naar het object wiens methode of constructor wordt aangeroepen.
In ons voorbeeld staat in de body van de constructor methode
class CirkelCanvas extends Canvas
{
JPanels_1 fr;
CirkelCanvas(JPanels_1 fr)
{
this.fr = fr;
}
De regel this.fr = fr; is een assignment statement (een
toekenningsopdracht). Het wijst de waarde aan de rechterkant van het ‘=’
teken toe aan de variabele aan de linkerkant.
Een algemene vorm van een toekenningsopdracht ziet er als volgt uit:
6 van 8
theorie
<veranderlijke> = <uitdrukking>
De <uitdrukking> kan een constante waarde zijn (bijv. int temperatuur = 20)
maar ook een veranderlijke waarde.
In het cirkelprogramma wordt deze assignment gebruikt om duidelijk te
maken dat hier wordt verwezen naar het object JPanels_2 fr. Eigenlijk staat
er dus dat met de parameter JPanels_1 fr in de constructormethode verwijst
naar de instantie JPanels_1 fr in de klasse CirkelCanvas.
Event afhandeling
Er zijn een aantal klassen betrokken bij de afhandeling van events.
java.awt.event
Interface ActionListener
De klasse die geintereseerd is om een actie (ActionEvent) uit te voeren
implementeert de bovenstaande interface, Het object dat de actie moet
uitvoeren roept de methode actionPerformed (Action event e) aan.
Het object in de interface waarop de event (gebeurtenis) plaatsvindt krijgt de
ActionEvent.
java.util
Class EventObject
java.lang.Object
java.util.EventObject
(Deze klasse bevat de methode: getSource() zoals je hieronder kunt
lezen. Deze methode vraagt op welk object de gebeurtenis moet
worden afgehandeld)
getSource
public Object getSource()
The object on which the Event initially occurred.
7 van 8
theorie
Containers
Een container is een component die andere componenten in zich heeft. Applets en
Windows zijn voorbeelden van containers.
Een toplevelcontainer is het hoogste niveau container.
Swing definieert twee typen containers.
Het eerste type wordt Top-level containers (JFrame, JApplet, JWindow en JDialog)
genoemd. Deze top-levelcontainers erven niet van Jcomponent (Zie figuur 1). Zij
erven wel over van de AWT klassen (AWT is de voorloper van Swing).
Een top-level container is de hoogste container in hierarchie en zit in geen enkele
andere container. Iedere container moet beginnen met zijn top-levelcontainer. De
meest voorkomende in applicaties zijn JFrame en JApplet.
Een tweede type containers zijn de containers die wel van Jcomponent overerven. Zij
worden in figuur 1 niet genoemd. Het zijn JPanel, JScrollPane en JRootPane. Dit type
container kan voorkomen in een andere container. Zij worden veel gebruikt om
componenten te organiseren.
ContentPane
Iedere top-level container heeft een ContentPane in zich welke de visuele
componenten van de GUI bevat.
Met de methode add voeg je componenten aan het ContentPane toe.
8 van 8
Download