• No results found

Grafiska användarinterface (GUI) Byggstenarna i ett GUI...

N/A
N/A
Protected

Academic year: 2021

Share "Grafiska användarinterface (GUI) Byggstenarna i ett GUI..."

Copied!
17
0
0

Loading.... (view fulltext now)

Full text

(1)

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

Sven-Olof Nyström Uppsala Universitet

March 14, 2006

Skansholm: Kapitel 6

(2)

Grafiska användarinterface (GUI) Byggstenarna i ett GUI...

En ‘pil’ som styrs av användaren, fönster och ikoner som skapas av en applikation, diverse komponenter, till

exempel knappar, skjutreglage, textfält,...

• Användaren kommunicerar med fönstersystemet via klick och musrörelser.

• Användaren kan tex flytta omkring fönster på

skärmen—påverkar ej applikationen.

(3)

GUI (forts)

• Användaren kan kommunicera med programmet genom att göra val på menyer, klicka på knappar, fylla i textrutor etc.

• Varje operation som användaren utför kan få programmet att göra olika saker.

• Viktig aspekt: Användaren bestämmer i vilken

ordning olika operationer ska utföras (i motsats till ett textorienterat interface).

Hur tar programmet emot interaktion från användaren?

(4)

GUI: Typiska klasser och interface för interaktion

• AWTEvent — Abstrakt klass. Representerar en händelse.

• ActionEvent — Subklass till AWTEvent. Denna brukar genereras vid knapptryckningar etc. (knapp = klassen Button)

• ActionListener — Interface. En klass som hanterar ActionEvents måste implementera detta gränssnitt.

• MouseListener — Interface. Används om man vill fånga upp mushändelser “direkt”.

• MouseAdapter — Abstrakt klass. Implementerar

MouseListener. Definierar tomma metoder för alla metoder

i MouseListener.

(5)

Scenario för enkel interaktion

• Användaren ’klickar’ på ett fönster

• Händelsen representeras med ett objekt i klassen AWTEvent

• Swing tar reda på motsvarande komponent genom en sökning i trädet av komponenter

• och anropar dess händelselyssnare med händelsen som argument.

• Den anropade metoden “tolkar” händelsen genom att utföra önskade operationer och

om fönstrets utseende ändrats, anropar repaint()

(6)

Händelser

Olika typer av händelser, tex

• MouseEvent

– e.getX(), e.getY() ger koordinater – e.clickCount() antal musklick

– e.getComponent() ger den komponent som

musen befinner sig i.

(7)

Olika typer av händelser (forts)

• KeyEvent (tangenttryckning)

– e.getKeyCode() vilken tangent

– e.getKeyChar() vilket tecken

– e.getComponent()

(8)

Händelser: ett enkelt exempel

Program: HandelseTest.java, MouseTest.java

(9)

Exempel: Kalkylator

Utöka kalkylatorexemplet (från tidigare föreläsning) så att man kan räkna på den!

Vad behöver göras?

• Snygga upp designen.

• Skriv händelselyssnare som talar om vad knapparna gör.

• Definiera motsvarande operationer i kalkylatorn.

(10)

Kalkylatorexemplet Idéer:

• Bygg en separat klasshierarki för de olika knapparna.

• Undvik allt för tät koppling mellan knapparna och kalkylatorn.

• Definiera knapparna utanför kalkylatorn.

(11)

Knappar: Klasshierarki

• Knapp — Abstrakt klass, superklass för övriga knappar

• SifferKnapp — Ärver av Knapp. Varje instans av klassen svarar mot en siffertangent.

• OpKnapp — Abstrakt klass. Superklass för +*-/=

• PlusKnapp — Plustangent.

[Och så vidare]

Program: Kalk3.java, Kalk4.java

(12)

Exempel: Ett enkelt ritprogram

(13)

Program: Punkter.java

(14)

Punkter: Kommentarer Notera:

Interface MouseListener kräver att ett antal metoder för olika mushändelser definieras. Dessa har egentligen inte så mycket med vårt problem att göra.

Klassen MouseAdapter implementerar MouseListener

och definierar alla metoder (med tom kropp). Genom att

ärva från MouseAdapter slipper man definiera en massa

metoder som man ändå inte använder.

(15)

En texteditor

Det är lätt att skriva en basal texteditor i Java. Man

använder helt enkelt en instans av klassen TextField för själva redigeringen. Dessutom krävs möjligheter att läsa in och spara filer. Knappar för detta placerar vi i en meny.

Program: TextEdit.java

(16)

Ett enkelt ritprogram

Scribble.java implementerar en applet i AWT.

Scribble2.java. Lite mer sofistikerad. Bilden försvinner inte om fönstret skyms.

Scribble4.java. Menyer för att spara och läsa in filer.

Sparar med DataOutputStream.

Scibble5.java. Sparar med ObjectOutputStream.

(17)

Sammanfattning

• Användaren bestämmer i vilken ordning saker ska ske

• ett klick i ett fönster ger ett anrop till motsvarande händelselyssnare

• en händelselyssnare är ett objekt som skapats för detta ändamål

• när du kodar händelselyssnaren bestämmer du vad

som ska hända i en viss situation

References

Related documents

Vår undersökning kommer att undersöka hur form, färg och information, som deras moraliska nivå enligt spelet, i ett spels gränssnitt påverkar en spelares moraliska val..

Tools for testing are included in the Android SDK, and provide the developer with support for writing automated tests using the UI Automator framework, and Monkeyrunner to generate

Support for Conceptual Model Design are for instance information architecture [25], which is a hierarchical organisation of content and features of a system, and task

Digitalisering av Universitetsservice kvalitetsstyrning genom programmet AutoFlowChart Digitalization of Universitetsservice quality management with the program AutoFlowChart

Målet med detta projekt har varit att utveckla NetAlert™ vidare, för att få ett responsivt och användarvänligt gränssnitt som alla kan använda, oavsett teknisk

For fixed main axis size containers, we can specify the alignment of items across the main axis (start (default), center, end, space-between, space- around).. This is the handling

Extrahera till: När användaren valt vilka arkiv som ska packas upp, trycker han eller hon här, och öppnar därmed en mappväljare, för att välja en målmapp, eller för att skapa en

• Användaren kan kommunicera med programmet genom att göra val på menyer, klicka på knappar, fylla i textrutor etc?. • Varje operation som användaren utför kan få programmet