Objekter i java.awt.*



Like dokumenter
Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. Inf GUI - del 2

INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 INF1010

GUI - del 2. Stein Gjessing Inst for Informatikk Univ. i Oslo

INF1010. Grafisk brukergrensesni. med Swing og awt del 2. INF Grafisk brukergrensesni4 II

Grafiske brukergrensesnitt med Swing og AWT

INF1010. Grafisk brukergrensesni. med Swing og awt del 2

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. GUI - del 2

Kapittel 15: Grafiske brukergrensesnitt. Del II

Uke mars 2005 GUI - del 2. GUI (Graphical User Interface)-programmering

Inf mars 2010 GUI del 2

INF Våren Li' repe$sjon om Tråder og GUI. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk

Grafisk Brukergrensesnitt

Inf 1010 GUI - del 2

GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser. En oversikt over kapittel 19 i boka

6108 Programmering i Java. Leksjon 8. GUI: Grafisk brukergrensesnitt. Del 2: Roy M. Istad 2015

import javax.swing.*; import java.awt.*;

Gjennomgang av eksamen H99

JPanel. Komponent hieraki. Window/JWindow. Applet/JApplet. JDialog. JFrame

GUI («Graphical User Interface») del 2

LO191D/LC191D Videregående programmering

Det finnes ingenting. som kan gjøres med interface. men som ikke kan gjøres uten

GUI («Graphical User Interface») del 2

INF Seminaroppgaver til uke 3

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring AITeL

Kapittel 7: Mer om arv

INF1010 våren 2006 Uke 19: 9. mai 2006 Et større eksempel: Solitaire (kabal)

INF1010 Arv. Marit Nybakken 2. februar 2004

EKSAMEN I FAG TDT4100 Objekt-orientert programmering. Fredag 3. juni 2005 KL

GUI 3 JavaFX. Mer interaksjon Hvordan gi input :l programmet. INF1010 Stein Michael Storleer

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. Inf GUI - del 2

Eksekveringsrekkefølgen (del 1) Oppgave 1. Eksekveringsrekkefølgen (del 2) Kommentar til oppgave 1. } // class Bolighus

INF1010 Grafisk brukergrensesni3 (GUI) med Swing/awt. del 1

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

EKSAMEN I FAG TDT MMI Lørdag 4. juni 2005 Tid: kl

Kapittel 13: Grafiske brukergrensesnitt INF 100. Java som første programmeringsspråk

EKSAMEN I FAG TDT4180 MMI Mandag 18. mai 2009 Tid: kl

UNIVERSITETET I BERGEN Det matematisk-naturvitenskapelige fakultet

TOD063 Datastrukturer og algoritmer

Løsningsforslag Test 2

Mål med kurset. Java i INF Dagens tema. GUI med Swing. Dokumentasjon

HØGSKOLEN I SØR-TRØNDELAG

Kapittel 15: Grafiske brukergrensesnitt: Enkel GUI. Del I

Kapittel 15: Grafiske brukergrensesnitt: Enkel GUI. Del I

TDT4100 Objektorientert programmering

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

OPPGAVE 5b og 8b Java Kode

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

Algoritmer og datastrukturer Kapittel 3 - Delkapittel 3.1

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

NB!!! Veldig korte svar er gitt her. Disse burde det vært skrevet mer på ved en eksamen..

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det, to typer av vinduer? GUI (Graphical User Interface)-programmering

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

UNIVERSITETET I OSLO

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne

ANTDAGER = 358; I Ifra nyttår 08 til 08 1ed julaften

Læringsmål for forelesningen

IN1010 våren 2018 Tirsdag 15. mai. Repetisjon av subklasser og tråder. Stein Gjessing Institutt for informatikk Universitetet i Oslo

UNIVERSITETET I OSLO

Post-it spørsmål fra timen (Arv og subklasser)

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

Objekt-orientering og Java. Oppfriskning og videreføring av Java-kunnskaper

Algoritmer og datastrukturer Kapittel 11 - Delkapittel 11.2

J2EE. CMP Entity Beans, Transaksjoner, JSP

Konstruktører. Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver. skjer følgende:

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

Kapittel 13: Grafiske brukergrensesnitt. Java som første programmeringsspråk

Kapittel 13: Grafiske brukergrensesnitt. Java som første programmeringsspråk

Introduksjon til objektorientert. programmering. Hva skjedde ~1967? Lokale (og globale) helter. Grunnkurs i objektorientert.

4. mars 2008 Grafisk brukergrensesnitt med Swing og awt Litt Modell Utsyn - Kontroll Del I. Stein Gjessing Inst for Informatikk Univ.

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det: To måter. GUI (Graphical User Interface)-programmering

INF 1010, vår 2005 Løsningsforslag uke 10

AKTIVITETER OG INTENSJONER...

Objektorientert programmering av datastrukturer og grensesnitt (Java) Knut W. Hansson. SKRIFT- SERIEN Nr. 7

TDT4100 Objektorientert programmering

. Ved sensur vl1 ahe bokstaverte deloppgaver (a, b, c,...) telle like mye.

Del 3: Evaluere uttrykk

Eksamen. Objektorientert Programmering IGR 1372

Kapittel 9: Sortering og søking Kort versjon

Factory Patterns Interface Deklarerer at klassen skal bruke et interface (implements i Java) Definerer implementasjoner for alle metodene i interfacet

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det: To måter. GUI (Graphical User Interface)-programmering. del 1. Litt Modell Utsyn - Kontroll

LC191D/LO191D Videregående programmering mai 2010

EKSAMEN I FAG TDT MMI Lørdag 11. august 2012 Tid: kl

INF1010 MVC i tekstbaserte programmer

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

Oppsummering. Kort gjennomgang av klasser etc ved å løse halvparten av eksamen Klasser. Datastrukturer. Interface Subklasser Klasseparametre

Hvordan gjør vi det, to typer av vinduer? Om Grafiske Bruker-Grensesnitt (GUI) GUI (Graphical User Interface)-programmering

Enkel app-programmering med JavaFX og FXML

EKSAMEN. TILLATTE HJELPEMIDLER: Alle trykte og skrevne. INNFØRING MED PENN, evt. trykkblyant som gir gjennomslag

Hva er verdien til variabelen j etter at følgende kode er utført? int i, j; i = 5; j = 10; while ( i < j ) { i = i + 2; j = j - 1; }

INF1010 våren Arv og subklasser del 1

PG4200 Algoritmer og datastrukturer Forelesning 7

Klassen javax.swing.joptionpane

ADT og OO programmering

Kapittel 8: Programutvikling

Eksamensoppgave Vår 2012 Ordinær eksamen Bokmål. Videregående programmering. Eksamensdato: Studium/klasse: 2. klasse

INF1010 våren Arv og subklasser del 1

En klasse som arver, eller selv deklarerer en abstrakt metode, må deklareres som abstrakt.

TDT4100 Objektorientert programmering

Transkript:

Litt om AWT og hendelser I. NOEN KOMPONENTER FOR GUI Container -> Window -> Frame kontroll-komponenter: knapper, textfelter,... II. HENDELSE-DELEGASJONSMODELL hva er en hendelse kilder: generering av hendelser i Java lyttere: håndtering av hendelser i Java III.NOEN LYTTERE-GRENSESNITT IV. LITT OM HENDELSESATTRIBUTTER V. PROGRAMMERING i-120 : h-98 Litt om AWT: 1 Objekter i java.awt.* Object (java.lang) «abstract» Component Button Canvas Graphics EventObject (java.util) «abstract» Container Checkbox Choice GUI kontrollkomponenter AWTEvent Panel Window Label List Applet Dialog Frame Scrollbar TextArea TextComponent TextField i-120 : h-98 Litt om AWT: 2

Component Alle ikke-meny-relaterte elementer som utgjør et grafisk brukergrensesnitt er utledet fra den abstrakte klassen Component. Component-klassen tilbyr støtte for håndtering av hendelser, endring av komponent-størrelse, kontroll av fonter og farger, og tegning av komponenter og deres innhold. Komponent gjøres synlig og usynlig på skjermen ved å bruke setvisible(boolean) metoden. Komponent-størrelse settes ved å kalle : setsize(int,int) metode, evt. setsize(dimension) metode i-120 : h-98 Litt om AWT: 3 Container java.lang.object +----java.awt.component (abstract) +----java.awt.container (abstract) Den abstrakte Container-klassen definerer metoder for nøsting av andre Component-objekter i et Container-objekt, mao. en kontainer er en komponent som kan inneholde andre komponenter (og dermed andre kontainere siden en kontainer er en komponent pga arv). En slik oppbygging definerer et komponent-hierarki av komponenter som inneholder hverandre (i motsetning til arv-hierarkiet). add(component comp) brukes av konkrete subklasser til Containerklassen for å tilføye en komponent til en kontainer. En kontainer bruker en layout-manager til å posisjonere komponenter i den: setlayout(layoutmanager mgr) i-120 : h-98 Litt om AWT: 4

Panel java.lang.object +----java.awt.component (abstract) +----java.awt.container (abstract) +----java.awt.panel Panel-klassen er en konkret implementasjon av Container-klassen. Et panel er en rekursiv, nøstet komponent: et vindu som ikke har tittel, menyer eller kanter, men inneholder andre komponenter. Komponenter kan tilføyes til et Panel-objekt vha. de arvede add()-metodene i følge en layout-manager. Panel bruker FlowLayout-manager som standard layout manager. setlayout(layoutmanager mgr)kan brukes for å endre på det i-120 : h-98 Litt om AWT: 5 Window java.lang.object +----java.awt.component (abstract) +----java.awt.container (abstract) +----java.awt.window Window-klassen oppretter et topp-nivå vindu som er uten tittel, menyer, eller kanter. Et topp-nivå vindu kan ikke inkorporeres/nøstes i andre komponenter. Et topp-nivå vindu kan gjøres synlig ved å kalle den overkjørte metoden show(), og usynlig ved å kalle den arvede metoden setvisible(false). brukes sjelden... i-120 : h-98 Litt om AWT: 6

Frame java.lang.object +----java.awt.component (abstract) +----java.awt.container (abstract) +----java.awt.window +----java.awt.frame Frame-klassen brukes til å opprette det som vanligvis menes med et "vindu" som har tittel, menyer, kant, markør og et ikon. EtFrame-objekt danner utgangspunktet for en ramme-basert applikasjon, og er vanligvis det som danner roten til et komponent-hierarki. etframe-objekt kan inneholde flere paneler som i sin tur kan inneholde GUI kontrollkomponenter og andre paneler. default er BorderLayout (med Center, South, North, West, East ) settitle( Hi frame ) setmenubar(menubar mb) setsize(int, int) setlayout(layoutmanager mgr) add( North, Component) setvisible(boolean vis), dispose() i-120 : h-98 Litt om AWT: 7 GUI kontroll-komponenter Object «abstract» Component Button GUI kontroll-komponenter gjør interaksjon mellom brukeren og programmet mulig. Inn-komponenter: mottar informasjon fra brukeren, f.eks. Button, TextField, Checkbox. Ut-komponenter: presenterer informasjon for brukeren, f.eks. TextField. En layout-manager brukes til å posisjonere komponenter i en kontainer, f.eks. i et Panel-objekt. Komponenter tilføyes vanligvis til en kontainer vha. add()- metoden. "Look and feel" til brukergrensesnitt bestemt av plattform applikasjon kjøres på. Canvas Checkbox GUI kontroll- Choice komponenter Label List Scrollbar TextArea TextComponent TextField i-120 : h-98 Litt om AWT: 8

Et enkelt vindu import java.awt.*; class ioframe extends Frame { protected Button Quit, OK; protected TextField txt; public ioframe(string title, int x, int y) { settitle(title); setsize(x,y); setlayout(new FlowLayout()); txt = new TextField( skriv inndata her ); txt.seteditable(true); add(txt); Quit = new Button( avslutt ); OK = new Button( ok ); add(ok); add(quit); setvisible(true); String les() { return txt.gettext(); void skriv(string s) { txt.settext(s); int lesint() throws NumberFormatException { return Integer.parseInt(txt.getText()); void skriv(int i) { txt.settext(integer.tostring(i)); title skriv inndata her ok avslutt i-120 : h-98 Litt om AWT: 9 Et annet enkelt vindu import java.awt.*; public class mframe extends Frame {... Button ok= new Button( OK ); Button ca= new Button( Cancel ); Menu m= new Menu( Test ); MenuBar bar= new MenuBar(); Choice c= new Choice(); public mframe(string title, int x, int y) {... MenuItem mi= new MenuItem( Do it ); m.add(mi); mi= new MenuItem( Quit ); m.add(mi); bar.add(m); c.additem( 12 ); c.additem( 14 ); // alt dette må plasseres i vinduet... setmenubar(bar); add( North, ok); add( South, ca); add( Center,c); setvisible(true); Test Do it Quit title OK 12 Cancel i-120 : h-98 Litt om AWT: 10

Informasjon inn og ut fra GUI kontroll-komponenter TextArea, TextField: t = new TextField( Hei,10); new TextArea( Hei,5,10);. bruk t.gettext() for å hente et String-objekt. bruk t.settext(string str) til å skrive et String-objekt. bruk t.seteditable(boolean) for å tillate/forby editering av teksten. Tekst må konverteres til og fra riktig data type. Checkbox: cb = new CheckBox( tick me ). bruk cb.getstate() for å finne om den er valgt eller ikke. bruk cb.setstate(boolean flagg) til å sette tilstand til Checkboxobjekter lik verdien gitt i flagg-parameteren. Choice: ch = new Choice(). bruk ch.additem( valg1 ) til å lage en liste av alternativer bruk ch.getselecteditem() for å hente navnet på valgt alternativ Button: new Button( label ) Menu: newmenu( navn ) i-120 : h-98 Litt om AWT: 11 Hendelse-delegasjonsmodell mus (klikk, dratt... ) tast (trykt, sluppet) CheckBox, CheckBoxMenuItem (endret) MenuItem (valgt), Button (trykt)... MouseEvent KeyEvent ItemEvent ActionEvent... A kilde skjedd hendelse e av type X trigger XListener sin emetode (XEvent e) MouseListener MouseMotionListener KeyListener ItemListener ActionListener... Grafisk brukergrensesnitt lytter En kilde kan generere forskjellige hendelser og ha flere lyttere. Samme lytter kan lytte til forskjellige hendelser fra forskjellige kilder. bruker i-120 : h-98 Litt om AWT: 12

Kilder og Lyttere En kilde (source) er en komponent (Component) som kan generere hendelser. En lytter (listener) er et objekt som er interessert å bli informert om hendelser når disse skjer. En kilde informerer lyttere om hendelser når de skjer, og sender nødvendig informasjon om hendelser til lyttere. En lytter, som er interessert i å motta informasjon om bestemte hendelser, må på forhånd registrere seg med kilde(r) som kan generere disse hendelsene. En kilde kaller en bestemt metode i alle lyttere for en gitt hendelse, og lyttere garanterer at denne metoden eksisterer ved å implementere et lytter-grensesnitt (Listener interface) for denne hendelsen. Hvilket som helst objekt kan være en lytter så lenge det implementerer riktig lyttergrensesnitt (XListener) for spesifikke hendelser (XEvent), og registrerer seg (addxlistener()) hos en kilde som genererer disse hendelsene. Subklasser til en komponent kan generere samme hendelser som denne komponenten pga. arv. i-120 : h-98 Litt om AWT: 13 Noen lytter-interface public interface MouseListener { void mouseclicked(mouseevent evt); MouseEvent e void mousereleased(mouseevent evt); void mousepressed(mouseevent evt); void mouseentered(mouseevent evt); void mouseexited(mouseevent evt); public interface MouseMotionListener { void mousemoved(mouseevent evt); void mousedragged(mouseevent evt); public interface KeyListener { void keypressed(keyevent evt); void keyreleased(keyevent evt); void keytyped(keyevent evt); public interface ActionListener { void actionperformed(actionevent evt); KeyEvent e ActionEvent e public interface ItemListener { void itemstatechanged(itemevent evt); ItemEvent e i-120 : h-98 Litt om AWT: 14

Hendelsesatributter Event e fra når metode e.... returnerer EventObject Object getsource() kilde til hendelsen AWTEvent ActionEvent Button klikk String getactioncommand() knapp-tekst MenuItem valg meny-tekst List dobbel klikk valgt-tekst TextField [ENTER] tekst i feltet ItemEvent CheckBox seleksjon / Object getitem() valgt Item / Choice... deseleksjon... InputEvent int getmodifiers()!= 0 hvis Crl/Shft/Esc/Alt boolean iscontroldown() boolean isshiftdown() Component... MouseEvent mus- klikk int getx() x / y koordinat / punktet knapp trykt int gety() (relativt til kilde) sluppet Point getpoint() der hendelse skjedde mus- gikk inn/ut int getclickcount() # klikk bevegelse flyttet/dratt... KeyEvent en tast trykt char getkeychar() tegnet for tasten sluppet int getkeycode() tast-kode for tasten tastet... i-120 : h-98 Litt om AWT: 15 Programmering av en lytter import java.awt.*; import java.awt.event.*; public class ioframe extends Frame implements ActionListener, MouseListener, ItemListener {... Button ok= new Button( OK ); Button ca= new Button( Cancel ); Menu m= new Menu( Test ); MenuBar bar= new MenuBar(); Choice c= new Choice() public ioframe(string title, int x, int y) {... MenuItem mi= new MenuItem( Do it ); m.add(mi); mi= new MenuItem( Quit ); m.add(mi); bar.add(m); mi. addactionlistener((actionlistener)this); c.additem( 12 ); c.additem( 14 ); // alt dette må plasseres i et vindu... ok/ca. addactionlistener((actionlistener)this); setmenubar(bar); add( North, ok); add( South, ca); add( Center,c); c.additemlistener((itemlistener)this); setvisible(true); addmouselistener((mouselistener)this); public void actionperformed(actionevent e) { Object s = e.getsource(); if (s == ok)... publicvoiditemstateschanged(itemevente){ else if (s == ca)... if (e.getsource() instanceof Choice) { else if (s instanceof MenuItem) { String s = c.getselecteditem(); MenuItem mi = (MenuItem)s; if (s.equals( 12 ))... String arg = mi.getlabel();... if (arg.equals( Do it ))... else if (arg.equals( Quit )) { setvisible(false); dispose(); System.exit(0); public void mouseclicked(mouseevent e) { int c= e.getclickcount(); int x= e.getx(); int y= e.gety();... public void mousepressed(mouseevent e) { public void mousereleased(mouseevent e) { public void mouseentered(mouseevent e) { public void mouseexited(mouseevent e) { i-120 : h-98 Litt om AWT: 16