Java GUI (AWT og SWING)

Størrelse: px
Begynne med side:

Download "Java GUI (AWT og SWING)"

Transkript

1 IN-OBJ-EVU, dag 5 og 6 desember 2002 Stein Gjessing Mer om grafiske grensesnitt og hendelsesorientert programmering Applets = Javaprogrammer i nettleseren Med bidrag fra Jens Kaasbøl og Arne Maus 1 Java GUI (AWT og SWING) Containere (Vinduer, Frame - JFrame) Komponenter - del-vinduer, knapper, tekstfelt, menyer,.. Layout managers - enkel organisering av komponentene i et vindu Grafikk - tegne linjer, kurver, histogrammer - skrive tekst Hendelses-håndtering, ta i mot: - museklikk, musebevegelser - flytting, endring av vinduet - tasting (tasteklikk) Bilde, lyd, animasjon, film, mm. - inkludere bilder osv. med ulikt format 2

2 Hendelser (Event) Alt det brukeren gjør med: - musa, både bevegelse og museknappene - tastaturet oppfanges av operativsystemet (Windows, Unix) Hver slik hendelse blir lagt i en kø som en melding med data om hva og hvor det skjedde (en kø pr. program på skjermen) Programmet (Javas kjøresystem) mottar meldingen, ser hvilken type den er, og sender den til det objektet (dvs kaller en bestemt metode i dette objektet (f.eks. actionperformed)) som har bedt om å få slike meldinger De meldingene som ingen ønsker tilsendt, kastes 3 Typer av hendelser museklikk musebevegelse trykke en tast ned slippe en tast trekke i ramma til et vindu for å endre størrelsen minimere/maksimere et vindu musa beveges inn/ut av et vindu... Finkornet eller grovkornet behandling Engelsk: Fine grained vs. course grained 4

3 Finkornet eller grovkornet Ofte kan vi velge å motta samme hendelelse (f. eks. inntasting) -Finmasket - jobbe med hver bevegelse av tastene (f.eks. trykke ned / slippe opp hver tast) -KeyEvent -Grovmasket jobbe med sammensatte hendelser (f.eks. brukeren er ferdig med å skrive en hel linje og trykker CR) -ActionEvent 5 Listener og Adapter Når vi ønsker å fange én bestemt type event, har vi to muligheter: - implementere et grensesnitt (interface) - f.eks.... implements WindowListner - lage en subklasse av en klasse - f.eks.... extends WindowAdapter Hvorfor eksisterer to muligheter: - Der hvor det er mer enn én metode i grensesnittet, har AWT også laget en Adapter -klasse som implementerer alle metodene i grensesnittet (uten å legge noe kode i metodene) - Bruker vi subklasse av en Adapter, betyr det at vi slipper med bare å implementere de metodene vi er interessert i dvs. de programmet vårt bruker (de andre forblir tomme) Adaptere ble laget i Java 1.1 etter at noen hadde skjønt at det ble for tungvindt å alltid måtte implementere alle metodene i et grensesnittet (interface) 6

4 Noen eksempler Hendelse Listner / Adapter type komponent ActionEvent ActionListner/ActionAdapter (bare én JButton, List, MenuItem, metode - actionperformed) JTextField MouseEvent MouseListener MouseAdapter (mange metoder) MouseMotionListener MouseMotionAdapter Component, JComponent, JButton, Applet, JTextField, JScollPane osv. KeyEvent WindowEvent KeyListener KeyAdapter keypressed(..) keyreleased(..) keytyped(..) Alle typer Component: JTextField, JPanel, JComboBox, osv. JFrame, JDialog, WindowListener JFileChooser WindowAdapter mange metoder - se senere eksempel 7 Vi husker: Lukke et vindu f.addwindowlistener (new WindowAdapter ( ) { public void windowclosing (WindowEvent e) { System.exit(0); ); 1) Vi lager et objekt av (en anonym subklasse til) Adapter-klassen: new WindowAdapter 2) I denne lager vi vår versjon av metoden: windowclosing(..) (de andre metodene uforandret) 3) Vi sier fra (til kjøresystemet java ) med addwindowlistener (..) at dette nye objektet skal få vinduets lukke-hendelsen tilsendt 4) Når noen trykker på øverst i høyre hjørne kaller så kjøresystemet windowclosing i det utpekte objektet av en subklasse til WindowAdapter med en peker til et WindowEvent objekt som parameter 5) I denne metoden (windowclosing) skriver vi så den koden vi vil 8

5 Eks: Hva kan vi gjøre med et vindu - interface WindowListener Metoder i grensesnittet WindowListener (som vi da må lage egne varianter av for ALLE metodene) windowactivated(windowevent); Invoked when a window is activated. windowclosed(windowevent); Invoked when a window has been closed. windowdeactivated(windowevent); Invoked when a window is de-activated windowclosing(windowevent); Invoked when a window is in the process of being closed windowdeiconified(windowevent); Invoked when a window is de-iconified. windowiconified(windowevent); Invoked when a window is iconified. windowopened(windowevent); Invoked when a window has been opened. 9 Samme metoder i WindowAdapter Samme metoder som i class WindowListener Men nå behøver vi bare lage egne varianter av de vi selv skal bruke windowactivated(windowevent) { windowclosed(windowevent) { windowclosing(windowevent) { windowdeactivated(windowevent) { windowdeiconified(windowevent) { windowiconified(windowevent) { windowopened(windowevent) { Disse metodene er allerede skrevet som TOMME metoder (dvs. koden gjør ingen ting) - vi redefinerer bare de vi skal bruke i en subklasse vi lager av class WindowAdapter 10

6 Utvidet trafikklys (Traffic1) Vi skal velge farge i rullegardinmenyen, og det tallet som skrives i tekstboksen skal skrives ut ved den fargen 11 Nå velger vi Yellow : Red Yellow Green Walk klikk + Taste 77 + CR i tekst-feltet: JComboBox side 751 i Eckel 12

7 Tillegg / endringer blir da Ny valg-meny nederst til venstre Tekster til høyre for trafikklyset Ny tekst/tall-boks nede 13 import java.awt.*; import java.awt.event.*; import javax.swing.*; Fullsetendig program public class Traffic1 extends JFrame implements ActionListener, ItemListener { private LightsCanvas lights; private JTextField duration; private CJComboBox colours; private JButton walkbutton; private JButton closebutton; public Traffic1( ) { JPanel title = new JPanel (); title.add(new JLabel("Savanna Traffic Light Simulation")); getcontentpane().add("north", title); lights = new LightsCanvas(); /denne klassen er definert senere getcontentpane(). add("center", lights); Tittelen i nord og lysene i sentrum 14

8 JPanel buttons = new JPanel(); colours = new JComboBox (); colours.additem("red"); colours.additem("green"); buttons.add(colours); colours.additemlistener(this); colours.seteditable(false); colours.additem("yellow"); colours.additem("walk"); Rullegardinmenyen som kommer frem når vi skal velge en farge Sier fra hvilket objekt som inneholder metoden itemstatechanged buttons.add(new JLabel("Duration")); Tekstfelt som kan editeres duration = new JTextField("", 3); duration.seteditable(true); duration.addactionlistener(this); buttons.add(duration); walkbutton = new JButton("Walk"); // no action yet Dette objektet buttons.add(walkbutton); Sier hvilket skal lytte både objektet som closebutton = new JButton("Close"); på tekstfeltet lytter på disse closebutton.addactionlistener(this); og på close - buttons.add(closebutton); knappene knappen med getcontentpane(). add("south", buttons); actionperformed // slutt konstruktør Putt dette ned på sydsiden 15 // actionperformed tar i mot både trykk på close knappen // og <CR> i tekstefeltet public void actionperformed(actionevent e) { if (e.getsource() == closebutton) { setvisible(false); dispose(); System.exit (0); Her stopper programmet else if (e.getsource() == duration) { message[light] = duration.gettext(); lights.repaint(); Her forandres lys-lengden på gjeldende lys ( light -variablen forteller hva som er gjeldende lys (se neste side)) e.getsource gir en peker til knappen/feltet som brukeren trykket på eller tastet <CR> i 16

9 public void itemstatechanged(itemevent e) { if (e.getitemselectable()==colours) { String s = (String) e.getitem(); if (s.equals("red")) {light = 0; else if (s.equals("yellow")) {light = 1; else if (s.equals("green")) {light = 2; else if (s.equals("walk")) {light = 3; public static void main(string[] args) { JFrame f = new Traffic1(); f.settitle("traffic Lights Version 1"); f.setsize(350, 240); f.setvisible(true); f.addwindowlistener(new WindowAdapter () { public void windowclosing(windowevent e) { System.exit(0); ); private int light = 0; String [ ] message={"default","default", "default","default"; Her behandles forandringer av rullegardinen Her settes hvilket lys som gjelder Lag et vindu Lag et objekt og en metode som lytter på x 17 class LightsCanvas extends JComponent { // Dette er en indre klasse i Traffic1 public void paint(graphics g) { g.drawoval(87, 10, 30, 68); g.setcolor(color.red); g.filloval(95, 15, 15, 15); g.setcolor(color.yellow); g.filloval(95, 35, 15, 15); g.setcolor(color.green); g.filloval(95, 55, 15, 15); // walk light is also green: g.filloval(95, 85, 15, 15); g.setcolor(color.black); g.drawstring("red", 15, 28); g.drawstring("yellow", 15, 48); g.drawstring("green", 15, 68); g.drawstring("walk", 15, 98); g.drawstring(message[0], 135,28); g.drawstring(message[1], 135, 48); g.drawstring(message[2], 135, 68); g.setcolor(color.black); g.drawstring(message[3], 135, 98); // slutt paint // slutt class lightscanvas //slutt class Traffic1 paint og paintcomponent blir kalt på samme måte, dvs. automatisk hver gang vinduet blir tegnet ut (på nytt) 18

10 Om å lage grafiske grensesnitt - Generelle regler Man bestemmer seg for hvordan skjermbildet (ett eller flere) skal se ut - typer av interaksjon og logikk (hvilke felter må fylles ut - og evt. rekkefølge) - krav til logikk i bruk av bildet huskes av lokale variable i subklassen av Frame Skal man ha fin grafikk på skjermbildet, buker man også Graphics - lag metode paint(graphics g) og fyll g med tegninger. Se også paintcomponent (side 768 i Eckel) og klassen Graphics2D Hvordan skjembilde organiseres ordnes med å evt. skifte LayoutManager Vi analyserer hvike typer Event vi vil behandle - Lager subklasser av de relevante Adapter ne (evt. implementerer grensesnittene, Listener ne) - skriver innmaten i de metodene som passer problemet vårt 19 Litt mer vindus pragmatikk: Krav til hvordan vinduet brukes JavaGently er ikke helt klar på vindus tilstander Meningen er derimot meget bra: a) Av og til setter vi krav til: - rekkefølgen av bruk av knapper, felter ol. - hvor mye som skal være utfylt i et vindu før vi aksepterer det fra bruker b) Da legger vi inn i vindusklassen vår (subklasse av JFrame) - variable, f.eks boolean, int osv. som holder rede på TILSTANDEN til vinduet: - hva har skjedd - bruk f.eks. seteditable(false); - er alle viktige felter utfylt? c) Skjer gal bruk av vinduet, bør vi sette opp et feil-vindu som forklarer og ber om mer/riktig utfylling 20

11 Varevekt-eksempelet Representerer en vekt Krav til bruk: - Først trykk WEIGH - så vilkårlig rekkefølge: - trykk vareslag - klikk i MASS-feltet + tast inn tall + CR - Sist: trykk PRINT CLOSE - lukker vinduet PRINT - gir total pris for varen i COST- feltet og skriver også ut prisen på System.out 21 Trykket: -WEIGH - Garlic - klikket CR i MASS -PRINT bruk C:\inobj\javaprog\swing> java Till 98.0kg G12.0 = G

12 import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Till extends JFrame implements ActionListener { vekt-felt og totalpris-felt private JTextField weighfield, totalfield; private JButton[ ] itembuttons; private JButton weighbutton, printbutton, closebutton; private double total; private double kg; private boolean chosen = false; private boolean weighed = false; private int select = 1; En tabell av knapper for alle vareslagene pluss vekt, skriv og lukke -knapper public Till() { super("savanna Grocers"); getcontentpane().setlayout(new BorderLayout()); JPanel p = new JPanel(); p.setlayout(new FlowLayout()); totalfield = new JTextField(6); totalfield.seteditable(false); p.add(new JLabel("COST")); p.add(totalfield); getcontentpane().add("north", p); Totalpris-felt med ledetekst i nord p = new JPanel(); p.setlayout(new GridLayout(5, 3)); itembuttons = new JButton[items.length]; for (int i = 0; i < items.length; i++) { itembuttons[i] = new Button(items[i]); itembuttons[i].addactionlistener(this); p.add(itembuttons[i]); Varene kommer fra tabellen items weighbutton = new JButton("WEIGH"); weighbutton.addactionlistener(this); printbutton = new JButton("PRINT"); printbutton.addactionlistener(this); closebutton = new JButton("CLOSE"); closebutton.addactionlistener(this); p.add(weighbutton); p.add(printbutton); p.add(closebutton); getcontentpane().add("center", p); 24

13 p = new JPanel(); p.setlayout(new FlowLayout()); De siste knappene weighfield = new JTextField(4); legges inn på weighfield.seteditable(false); sydsiden weighfield.addactionlistener(this); p.add(weighfield); p.add(new JLabel("MASS")); p.add(new JLabel("Type return after the amount")); getcontentpane().add("south", p); pack(); lager passende vindusstørrelse private String[] items = { "Apples", "Pears", "Oranges", "Potatoes", "Lemons", "Squash", "Onions", "Garlic", "Avocados", "", "", "" ; private double[] unitcosts = { 6.00, 5.00, 7.00, 3.00, 10.00, 4.00, 4.00, 12.00, 15.00, 0, 0, 0 ; 25 public void actionperformed(actionevent e) { Object source = e.getsource(); if (source == closebutton) { System.exit(0); else if (source == printbutton) { printitems(); else if (source == weighbutton) { resetweighfield(); else if (source == weighfield) { readweighfield(); else selectitem(e.getactioncommand()); hit kommer vi hver gang noen har trykket på en knapp (eller tastet retur i et tekstfelt) Navnet på knappen (Apples, Pears,...) Vi kunne også laget egne objekter til alle knappenes actionperformed 26

14 Disse tre metodene kalles fra actionperformed på forrige side public void resetweighfield() { weighfield.settext(""); weighfield.seteditable(true); public void readweighfield() { if (weighfield.iseditable()) { weighfield.seteditable(false); weighfield.selectall(); kg = (double)integer.valueof(weighfield.gettext().trim()).intvalue(); weighed = true; skriv ut det som ble valgt (select) public void printitems() { if (weighed && chosen) { select total = kg*unitcosts[select]; totalfield.settext("g "+total); System.out.println(kg+"kg G"+ unitcosts[select]+" = G"+total); kg = 0; weighed = false; chosen = false; total = 0; weighfield.select(0,0); 27 selectitem kalles også fra actionperformed public void selectitem(string item) { select = 0; while (! item.equals(items[select]) ) select++; chosen = true; public static void main(string[] args) { Frame f = new Till( ); f.setvisible(true); select selectitem sjekker hva som blir kjøpt f.addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent e) { System.exit(0); ); 28

15 Applets Applets er små Java-programmer som lastes ned fra en Web-server som del av en html -side. De viser seg inne i rammen til web-leseren (Netscape, Opera, Explorer) Alle Vanlige programmer som bruker AWT, kan lett omformes til applets Klient med bruker, laster ned Web-side (inkl Applet-en) Web-tjener med.html side og Applet 29 Applets Applets som bruker Swing er subklasser av JApplet De fleste web-lesere er ikke klare til å laste ned Java 2s JApplets uten videre Se side 696 i Bruce Eckel Vi vil derfor konsentrere oss om Applets i dette kurset Hittil har programmene våre vært subklasser av JFrame Applet-programmer er i steden subklasser av Applet 30

16 Klassehierarki for GUI med Applet Component A A Container Canvas Button Label Window Panel Scrollpane JComponenet Frame Dialog Applet JLabel JPanel JFrame FileDialog JDialog MittProg JApplet MinApplet Color Event Graphics Font MinJApplet LayoutManager Grid Flow Border 31 Hovedregler om hvordan man omformer et program til en Applet? 1. Ikke bruk linjebasert inn/ut-setninger F.eks. skriv om: System.out.println( Hei på deg, Kari ); til g.drawstring(( Hei på deg, Kari ); 2. Fjern all stopping av programmet som System.exit(0);. Web-leseren stopper Appleten. 3. Applet har FlowLayout (mens vanlige programmer har BorderLayout). Sett ny LayoutManager hvis nødvendig. 4. Bytt ut JFrame med Applet som superklasse. public class MineGreier extends Applet { Bytt ut konstruktor-navnet MineGreier(..){... med: public void init (..) { fjern hele main (som bare opprettet vinduet) 7. Lag en.html fil som refererer Applet en din 8. Test Applet en ved å kjøre den i en appletviewer eller i en web-leser 32

17 Eksempel: Virus-advarsel import java.awt.*; import java.awt.event.*; public class GraphicWarning extends JFrame { 4 3 static private final int line = 15; static private final int letter = 8; public GraphicWarning(String title) { super(title); setbackground(color.cyan); 5 public void paint(graphics g) { g.drawrect(2*letter, 2*line, 30*letter, 6*line); g.drawstring("w A R N I N G", 9*letter, 4*line); g.drawstring("possible virus detected", 4*letter, 5*line); g.drawstring("reboot and run virus", 5*letter, 6*line); g.drawstring("remover software", 7*letter, 7*line); public static void main(string[] args) { JFrame f = new GraphicWarning("Draw Warning"); f.setsize(40*letter,10*line); f.setvisible(true); f.addwindowlistener(new WindowAdapter () { public void windowclosing(windowevent e) { System.exit(0); ); html -fil: <HTML> <BODY> <APPLET CODE="AppWarning.class" WIDTH=300 HEIGHT=200> </APPLET> </BODY> </HTML> 7 import java.awt.*; import java.applet.*; import java.awt.event.*; 3 4 public class AppWarning extends Applet { static private final int line = 15; static private final int letter = 8; public void init() { 5 kjøring: 8 setbackground(color.cyan); 2 snidil[11] appletviewer AppWarning.html 6 public void paint(graphics g) { g.drawrect(2*letter, 2*line, 30*letter, 6*line); g.drawstring("w A R N I N G", 9*letter, 4*line); g.drawstring("possible virus detected", 4*letter, 5*line); g.drawstring("reboot and run virus", 5*letter, 6*line); 1 g.drawstring("remover software", 7*letter, 7*line); 34

18 Startet i Netscape og Explorer 36

19 Applet-metoder destroy() Called by the browser or applet viewer to inform this applet that it is being reclaimed and that it should destroy any resources that it has allocated. getappletcontext() Determines this applet's context, which allows the applet to query and affect the environment in which it runs. getappletinfo() Returns information about this applet. getaudioclip(url) Returns the AudioClip object specified by the URL argument. getaudioclip(url, String) Returns the AudioClip object specified by the URL and name arguments. getcodebase() Gets the base URL. Her kommer koden fra, getdocumentbase() og her kommer web-siden fra, Gets the document URL. getimage(url) så kanskje kankje det er mer her Returns an Image object that can then be painted on the screen. getimage(url, String) Returns an Image object that can then be painted on the screen. 37 getlocale( ) Gets the Locale for the applet, if it has been set. getparameter(string) Returns the value of the named parameter in the HTML tag. getparameterinfo( ) Returns information about the parameters that are understood by this applet. init( ) Called by the browser or applet viewer to inform this applet that it has been loaded into the system. isactive( ) Determines if this applet is active. play(url) Plays the audio clip at the specified absolute URL. play(url, String) Plays the audio clip given the URL and a specifier that is relative to it. resize(dimension) Requests that this applet be resized. resize(int, int) Requests that this applet be resized. setstub(appletstub) Sets this applet's stub. showstatus(string) Requests that the argument string be displayed in the "status window". start( ) Called by the browser or applet viewer to inform this applet that it should start its execution. stop( ) Called by the browser or applet viewer to inform this applet that it should stop its execution. 38

20 Mer om Applet Begrensninger i hva den har lov til å gjøre Parametre til en Applet Lese fil på server fra Applet Bilder og lyd i Applet Data til - applet (på klientmaskinen) - til serveren (skrive på fil) Det er jo noe av det som har gjort Java så populært 39 Begrensninger i hva har du lov til å gjøre i Applet Sikkerhetsnivåer - Applikasjon (ikke applet): - Kan gjøre alt, også fjerne filer - Egen applet i Viewer : - nesten alt (bare ikke fjerne filer) - Egen applet i internettleser - ikke aksessere lokale filer - Applet fra annen maskin i din internettleser - bare lov til å ta kontakt tilbake til server (som hadde appleten) og lage vinduer Sikkerheten kan skrues gradvis av i Java 2 40

21 Parametre til en Applet Man kan legg ut parametre på html-siden 41 import java.awt.*; import java.applet.*; import java.awt.event.*; public class AppMessage extends Applet { <HTML> <BODY> <APPLET CODE="AppMessage.class" WIDTH=300 HEIGHT=200> <PARAM NAME="Numparam" VALUE="3"> <PARAM NAME="Mess-1" VALUE="HUSK:"> <PARAM NAME="Mess-2" VALUE="Puss tennene"> <PARAM NAME="Mess-3" VALUE=" hver dag!"> </APPLET> </BODY> </HTML> static private final int line = 15; static private final int letter = 8; static private int antall; public void init(){ setbackground(color.yellow); antall = Integer.parseInt(getParameter("Numparam")); public void paint(graphics g) { for (int i = 1; i <= antall; i++) g.drawstring(getparameter("mess-" + i), 9*letter, (4+i)*line); 42

22 The Ultimate Apple : Bilder og lyd i Applet Vi skal lage en applet som tegner et lite bilde på en lite del av tegneflaten Når musa flyttes, skal bildet av og til flyttes til en annen del av tegneflaten Dette bildet skal vi prøve å klikke på med musa (antall treff og bom registreres) Hvis vi treffer skal det spilles én type lyd, bommer vi skal det spilles en annen lyd Av dette skal vi lære : - Hente bilde til Applet og tegne det ulike steder - Motta to typer begivenheter fra musa - bevegelse - klikking og hvor det klikkes - Spille lyd i Applet 43 html fil + applet <HTML> <BODY> <APPLET CODE="CatchOBJ.class" WIDTH=600 HEIGHT=400> </APPLET> </BODY> </HTML> DOS appletviewer Explorer (Windows 98) 44

23 Fullstendig program (52 linjer) import java.awt.*; import java.applet.*; import java.awt.event.*; public class CatchOBJ extends Applet { int mx, my, limitx, limity ; int wins; int boardsize; Image inobj; Origo (øverste venstre hjørne), samt høyde og bredde på bildet som skal treffes public void init() { wins = 0; boardsize = getsize().width - 1; inobj = getimage(getcodebase(),"logo.gif"); this.addmouselistener (new MousePressHandler()); this.addmousemotionlistener (new MouseMotionHandler()); Henter bildet (bare en gang) fra samme sted som Java-koden ligger 45 class MousePressHandler extends MouseAdapter { public void mousepressed (MouseEvent e) { int x = e.getx(); int y = e.gety(); requestfocus(); if (mx < x && x < mx+limitx && Innenfor? my < y && y < my+limity) { wins++; getappletcontext().showstatus("caught it! Total " + wins); play(getcodebase(), "fugl.au"); else { getappletcontext().showstatus("missed again."); play(getcodebase(), "gong.au"); repaint(); Henter lyden (hver gang) på samme sted som Java-koden ligger 46

24 public class MouseMotionHandler extends MouseMotionAdapter { public void mousemoved(mouseevent e) { if (e.getx() % 3 == 0 && e.gety() % 3 == 0) repaint(); public void paint(graphics g) { // wait till the image is in before getting the // size. Can't put these statements in init limitx = inobj.getwidth(this); limity = inobj.getheight(this); int change = boardsize-limitx; Tegner opp å nytt for ca. hver niende museavbrudd // draw a boundary g.drawrect(0, 0, boardsize, boardsize); mx = (int)(math.random()*1000) % change; my = (int)(math.random()*1000) % change; g.drawimage(inobj, mx, my, this); // slutt class Tegner bildet Beregn nye koordinater på bildet og flytt det 47 Filer i systemet : Fang bildet CatchOBJ.java CatchOBJ.class CatchOBJ$mouseMotionHandler.class CatchOBJ$mousePressHandler.class CatchOBJ.html fugl.au gong.au logo.gif 48

25 Lærdom: Å kjøre en applet 1) Applets og.html-sider kan kompileres én gang og kjøres mange steder 2) Utseende kan avvike litt (Standard font kan ha ulik utseende og størrelse. Dette er bedre i Swing, JApplet) 3) Mellomliggende programvare (f.eks. Xvision, som er X- server på PC med kontakt til Unix-server) kan stoppe funksjonalitet (som lyden) 49

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

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 INF1010 - Våren 2015 Li' repe$sjon om Tråder og GUI Stein Gjessing,, Universitetet i Oslo 1 GUI, tråder og hendelser Op-sys (Win, Linux,..) Ditt Program sin Event Dispatch Thread Hver ting brukeren gjør

Detaljer

Kap 11. Mer om grafiske grensesnitt og hendelsesorientert programmering

Kap 11. Mer om grafiske grensesnitt og hendelsesorientert programmering IN-OO1-EVU, dag 5 og 6 13 og 14 desember 1999 Stein Gjessing Kap 11. Mer om grafiske grensesnitt og hendelsesorientert programmering Kap 12. Applets Med bidrag fra Jens Kaasbøl og Arne Maus AWT - full

Detaljer

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

INF1010. Grafisk brukergrensesni. med Swing og awt del 2. INF1010 - - Grafisk brukergrensesni4 II INF1010 Grafisk brukergrensesni. med Swing og awt del 2 1 GUI (Graphical User Interface)- programmering n n n Enkel behandling av knappetrykk mm. Layout av vinduer Om å lytte på knappetrykk med musa n

Detaljer

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

JPanel. Komponent hieraki. Window/JWindow. Applet/JApplet. JDialog. JFrame Komponent hieraki Applet JPanel Component Container JComponent Panel Window JWindow Frame JApplet Dialog Brukes vanligvis som en ekstra container for å få til ønske layout. Legges til som en hvilken som

Detaljer

Grafisk Brukergrensesnitt

Grafisk Brukergrensesnitt Grafisk Brukergrensesnitt Repetisjonskurs Hva må kunnes? JFrame JPanel JComponents Layouts Listeners jframe Representerer et vindu JComponents legges på vinduet Har en tittel og størrelse Komponenter struktureres

Detaljer

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

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. Inf 1010-2008 GUI - del 2 GUI (Graphical User Interface)-programmering Inf 1010-2008 GUI - del 2 Stein Gjessing Inst for Informatikk Univ. i Oslo Tidligere Hvordan få laget et vindu på skjermen Grafikk (tegning i vinduet) Hvordan

Detaljer

INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 INF1010

INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 INF1010 Grafisk brukergrensesni3 med Swing og awt del 1 GUI (Graphical User Interface)- programmering Hvordan lage et vindu på skjermen Hvordan legge ulike komponenter i vinduet (trykknapper, tekseelter, tekst,

Detaljer

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

Uke mars 2005 GUI - del 2. GUI (Graphical User Interface)-programmering Uke10 29. mars 2005 GUI - del 2 Stein Gjessing Inst for Informatikk Univ. i Oslo GUI (Graphical User Interface)-programmering Forrige gang Hvordan få laget et vindu på skjermen Hvordan legge ulike komponenter

Detaljer

INF1010. Grafisk brukergrensesni. med Swing og awt del 2

INF1010. Grafisk brukergrensesni. med Swing og awt del 2 INF1010 Grafisk brukergrensesni. med Swing og awt del 2 GUI (Graphical User Interface)- programmering u u u Enkel behandling av knappetrykk mm. Layout av vinduer Om å lytte på knappetrykk med musa u Input

Detaljer

Inf 1010 GUI - del 2

Inf 1010 GUI - del 2 Inf 1010 GUI - del 2 Stein Gjessing Institutt for Informatikk Universitetet i Oslo 1 GUI (Graphical User Interface)-programmering Tidligere Hvordan få laget et vindu på skjermen Hvordan legge ulike komponenter

Detaljer

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

29.02.2012. GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser. En oversikt over kapittel 19 i boka GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser LC191D Videregående programmering Semesterplan: http://aitel.hist.no/fag/vprg/index_lc191d.php Høgskolen

Detaljer

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

GUI - del 2. Stein Gjessing Inst for Informatikk Univ. i Oslo Inf 1010-2009 GUI - del 2 Stein Gjessing Inst for Informatikk Univ. i Oslo GUI (Graphical User Interface)-programmering g Tidligere Hvordan få laget et vindu på skjermen Hvordan legge ulike komponenter

Detaljer

Grafiske brukergrensesnitt med Swing og AWT

Grafiske brukergrensesnitt med Swing og AWT Grafiske brukergrensesnitt med Swing og AWT - 1 av 11 INNHOLD INTRODUKSJON 3 VINDUER, RAMMER OG PANELER. 4 KOMPONENTER OG VINDUSELEMENTER 6 KNAPPER OG KNAPPELYTTERE.. 8 LAYOUT.. 10 APPENDIX. 11 2 av 11

Detaljer

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

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. GUI - del 2 GUI (Graphical User Interface)-programmering g Inf 1010-2009 GUI - del 2 Stein Gjessing Inst for Informatikk Univ. i Oslo Tidligere Hvordan få laget et vindu på skjermen Hvordan legge ulike komponenter

Detaljer

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

import javax.swing.*; import java.awt.*; import javax.swing.*; import java.awt.*; import javax.swing.*; import java.awt.*; Pluss mange Implementasjoner av forskjellige grensesnitt class RammeDemo { public static void main(string[] args) { JFrame

Detaljer

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE Emne: Informatikk II Emnekode: LO334E Faglig veileder: Hilde Hemmer Gruppe(r): 2EA,2EB,2EC Dato:14.12.04 Eksamenstid: 9 00-12 00 Eksamensoppgaven består av:

Detaljer

Gjennomgang av eksamen H99

Gjennomgang av eksamen H99 Gjennomgang av eksamen H99 Administrasjon av kurser, studenter og påmeldinger Ole Christian Lingjærde Gruppen for bioinformatikk Institutt for Informatikk Universitetet i Oslo Oppgave 1 (15 %) (Besvares

Detaljer

Inf mars 2010 GUI del 2

Inf mars 2010 GUI del 2 Inf 1010 11. mars 2010 GUI del 2 Stein Gjessing Ins$tu' for Informa$kk Universitetet i Oslo 1 GUI (Graphical User Interface) programmering Tidligere Hvordan få laget et vindu på skjermen Hvordan legge

Detaljer

Kapittel 15: Grafiske brukergrensesnitt. Del II

Kapittel 15: Grafiske brukergrensesnitt. Del II Kapittel 15: Grafiske brukergrensesnitt Del II Redigert av: Khalid Azim Mughal (khalid@ii.uib.no) Kilde: Java som første programmeringsspråk (3. utgave) Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen

Detaljer

Inf Våren 2008 Tråder del 1 Parallelle programmer og felles data. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo

Inf Våren 2008 Tråder del 1 Parallelle programmer og felles data. Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Inf 1010 - Våren 2008 Tråder del 1 Parallelle programmer og felles data Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Oversikt Hva er parallelle programmer? Hvorfor parallelle programmer?

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i Eksamensdag: 6. juni 2006 Tid for eksamen: 1430 1730 Oppgavesettet er på 6 sider. Vedlegg: INF1010 Objektorientert programmering

Detaljer

INF Våren Tråder. del 1. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk

INF Våren Tråder. del 1. Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo. Ins$tu' for informa$kk INF1010 - Våren 2014 Tråder del 1 Stein Gjessing,, Universitetet i Oslo 1 Maskin med 8 kjerner 2 Oversikt Hva er parallelle programmer? Hvorfor parallelle programmer? Hvordan kan de'e skje på en kjerne/cpu/prosessor?

Detaljer

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

INF1010 Grafisk brukergrensesni3 (GUI) med Swing/awt. del 1 INF1010 Grafisk brukergrensesni3 (GUI) med Swing/awt del 1 1 Hvordan lage et vindu på skjermen 2 Hvordan legge inn enkle elementer i vinduet 3 Hvordan lage et vindu med et sudokuspill 4 Hvordan lage en

Detaljer

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

INF1010 våren 2006 Uke 19: 9. mai 2006 Et større eksempel: Solitaire (kabal) Det ferdige spillet INF1010 våren 2006 Uke 19: 9. mai 2006 Et større eksempel: Solitaire (kabal) Stein Michael Storleer Institutt for informatikk Dette er kopier av lysark for en forelesning. Sidene er

Detaljer

Oversikt. Inf Våren Parallelle programmer og felles data. Hva er parallelle programmer I I. Hva er parallelle programmer?

Oversikt. Inf Våren Parallelle programmer og felles data. Hva er parallelle programmer I I. Hva er parallelle programmer? Oversikt Inf 1010 - Våren 2009 Tråder del 1 Parallelle programmer og felles data Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Hva er parallelle programmer? Hvorfor parallelle programmer?

Detaljer

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE

AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE AVDELING FOR INGENIØRUTDANNING EKSAMENSOPPGAVE Emne: Informatikk II Emnekode: LO325E Faglig veileder: G.Milvang og H.Hemmer Gruppe(r): 2EA,2EB,2EC Dato:12.12.03 Eksamenstid:9 00-14 00 Eksamensoppgaven

Detaljer

Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo

Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo INF1010 - Våren 2012 Tråder del 1 Parallelle programmer og felles data Stein Gjessing,, Universitetet i Oslo 1 2 Oversikt Hva er parallelle programmer? Hvorfor parallelle programmer? Hvordan kan de'e skje

Detaljer

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet

UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i : INF 101 - Grunnkurs i objektorientert programmering Eksamensdag : Tirsdag 4. juni 2002 Tid for eksamen : 09.00-15.00 Oppgavesettet

Detaljer

LO191D/LC191D Videregående programmering

LO191D/LC191D Videregående programmering LO191D/LC191D Videregående programmering Eksamen mai 2012 Løsningsforslag Oppgave 1 Klassen Destinasjon: // Oppgaven er uklar på hva som skal inn i klassen Destinasjon. // Her følger en minimumsutgave

Detaljer

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; }

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; } 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; Hva skrives ut på skjermen når følgende kode utføres? int [] tallene =

Detaljer

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

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det: To måter. GUI (Graphical User Interface)-programmering 4. mars 2008 Grafisk brukergrensesnitt med Swing og awt Litt Modell Utsyn - Kontroll Del I Stein Gjessing Inst for Informatikk Univ. i Oslo GUI (Graphical User Interface)-programmering I dag (så langt

Detaljer

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

4. mars 2008 Grafisk brukergrensesnitt med Swing og awt Litt Modell Utsyn - Kontroll Del I. Stein Gjessing Inst for Informatikk Univ. 4. mars 2008 Grafisk brukergrensesnitt med Swing og awt Litt Modell Utsyn - Kontroll Del I Stein Gjessing Inst for Informatikk Univ. i Oslo GUI (Graphical User Interface)-programmering I dag (så langt

Detaljer

Et enkelt rammeverk for kjøring av OpenGL-programmer i Java

Et enkelt rammeverk for kjøring av OpenGL-programmer i Java 1 Et enkelt rammeverk for kjøring av OpenGL-programmer i Java JOGL2 API og dokumentasjon kan lastes ned fra siden: http://www.aitel.hist.no/fag/_jva/forelesninger/grafikk/grafikk_h2015/nedlasting_og_installasjonsveiledning_jogl2.pdf

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo 1 Innledning Dette notatet beskriver noe av det som foregår i primærlageret når et Javaprogram utføres.

Detaljer

GUI («Graphical User Interface») del 2

GUI («Graphical User Interface») del 2 GUI («Graphical User Interface») del 2 Interaksjon med brukeren Hendelsesdrevet programmering Tråder i GUI Se også på Infoskrivet https://www.uio.no/studier/emner/matnat/ ifi/in1010/v18/gui/fx-intro-in1010.pdf

Detaljer

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

Mål med kurset. Java i INF 2400. Dagens tema. GUI med Swing. Dokumentasjon Mål med kurset Java i INF 2400 Introduksjon til signalbehandling Lyd som anvendelse Få programmeringserfaring Dagens tema Utplukk av Java (GUI, kode-konvensjon, polymorfisme, classpath, javadoc) Java og

Detaljer

GUI («Graphical User Interface») del 2

GUI («Graphical User Interface») del 2 GUI («Graphical User Interface») del 2 Interaksjon med brukeren Hendelsesdrevet programmering Tråder i GUI Et spill basert på klikkbare ruter Se også på Infoskrivet https://www.uio.no/studier/emner/matnat/

Detaljer

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

Om Grafiske Bruker-Grensesnitt (GUI) Hvordan gjør vi det: To måter. GUI (Graphical User Interface)-programmering. del 1. Litt Modell Utsyn - Kontroll INF1010-3. mars 2009 Grafisk brukergrensesnitt med Swing og awt - del 1 Litt Modell Utsyn - Kontroll Stein Gjessing Inst for Informatikk Univ. i Oslo GUI (Graphical User Interface)-programmering I dag

Detaljer

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

6108 Programmering i Java. Leksjon 8. GUI: Grafisk brukergrensesnitt. Del 2: 8.3 8.4 Roy M. Istad 2015 6108 Programmering i Java Leksjon 8 GUI: Grafisk brukergrensesnitt Del 2: 8.3 8.4 Roy M. Istad 2015 // Programforklaring // Noen nye import-setninger GUIprogram.java public class GUIprogram + vindu/hendelser

Detaljer

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

Vi lærte sist å lage vinduer. Om å lage et vindu. GUI (Graphical User Interface)-programmering. Inf 1010-2007 GUI - del 2 GUI (Graphical User Iterface)-programmerig If 1010-2007 GUI - del 2 Stei Gjessig Ist for Iformatikk Uiv. i Oslo Tidligere Hvorda få laget et vidu på skjerme Grafikk (tegig i viduet) Hvorda legge ulike

Detaljer

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

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring AITeL HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring AITeL Delprøve Kandidatnr: Prøvedato: 2. mars 2005 Varighet: 3 timer (9:00 12:00) Fagnummer: LO196D Fagnavn: Videregående programmering med

Detaljer

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

EKSAMEN I FAG TDT4180 MMI Mandag 18. mai 2009 Tid: kl. 0900-1300 NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP Faglig kontakt under eksamen: Dag Svanæs, Tlf: 73 59 18 42 EKSAMEN I FAG TDT4180 MMI Mandag 18. mai 2009

Detaljer

1 t:n'v'\ekode LO325E. Alle ~vne og trykte. GOd'"j(jent kalkulator

1 t:n'v'\ekode LO325E. Alle ~vne og trykte. GOd'j(jent kalkulator 1 t:n'v'\ekode j Emne: 11nformatiklc Il LO325E I Faglig veileder Hilde Hemmer 1 Gruppe(r) I DOtO:14~1~ E ksamenstld 900-1400 I Eksamen~pgaven består av: Antall sider (Inkl forsiden og vedlegg):6 Antal

Detaljer

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

INF 1010, vår 2005 Løsningsforslag uke 10 INF 1010, vår 2005 Løsningsforslag uke 10 Anders Brunland 1. april 2005 Oppgave 1 Oppgave 15.4 i i Rett på Java. Løsningsforslag De forskjellige komponentene settes i metoden initcomponents. Her settes

Detaljer

EKSAMEN I FAG TDT4180 - MMI Lørdag 4. juni 2005 Tid: kl. 0900-1300

EKSAMEN I FAG TDT4180 - MMI Lørdag 4. juni 2005 Tid: kl. 0900-1300 Side 1 av 7 NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP Faglig kontakt under eksamen: Dag Svanæs, Tlf: 73 59 18 42 EKSAMEN I FAG TDT4180 - MMI Lørdag

Detaljer

Repitisjonskurs. Arv, Subklasser og Grensesnitt

Repitisjonskurs. Arv, Subklasser og Grensesnitt Repitisjonskurs Arv, Subklasser og Grensesnitt Subklasser Klasser i OO-programmering representerer typer av objekter som deler et sett med egenskaper. En subklasse har egenskapene til en klasse + ett sett

Detaljer

IN1010 våren januar. Objektorientering i Java

IN1010 våren januar. Objektorientering i Java IN1010 våren 2018 23. januar Objektorientering i Java Om enhetstesting Om arrayer og noen klasser som kan ta vare på objekter Stein Gjessing Hva er objektorientert programmering? F.eks: En sort boks som

Detaljer

EKSAMEN I FAG TDT4180 - MMI Lørdag 11. august 2012 Tid: kl. 0900-1300

EKSAMEN I FAG TDT4180 - MMI Lørdag 11. august 2012 Tid: kl. 0900-1300 Side 1 av 8 NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP Faglig kontakt under eksamen: Dag Svanæs, Tlf: 73 59 18 42 EKSAMEN I FAG TDT4180 - MMI Lørdag

Detaljer

INF1010 våren januar. Objektorientering i Java

INF1010 våren januar. Objektorientering i Java INF1010 våren 2017 25. januar Objektorientering i Java Om enhetstesting (Repetisjon av INF1000 og lær deg Java for INF1001 og INF1100) Stein Gjessing Hva er objektorientert programmering? F.eks: En sort

Detaljer

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

INF1010, 21. februar Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF1010, 21. februar 2013 Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Ikke noe nytt her From the Java language specification (version 6): 14.14.2

Detaljer

Kodetime for Nordstrand barneskole

Kodetime for Nordstrand barneskole Kodetime for Nordstrand barneskole av Veronika Heimsbakk og Lars Erik Realfsen 1 Hva er Processing? Processing er et programmeringsspråk som er gratis, og tilgjengelig for alle! Man kan programmere i Processing

Detaljer

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

EKSAMEN. TILLATTE HJELPEMIDLER: Alle trykte og skrevne. INNFØRING MED PENN, evt. trykkblyant som gir gjennomslag KANDIDATNUMMER: EKSAMEN EMNENAVN: Programutvikling EMNENUMMER: IMT3281 EKSAMENSDATO:05/12-2007 KLASSE: 06HBINDA/06HBINDP TID: 09.00 13.00 EMNEANSVARLIG: Øivind Kolloen ANTALL SIDER UTLEVERT: 7 TILLATTE

Detaljer

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

Konstruktører. Bruk av konstruktører når vi opererer med enkle klasser er ganske ukomplisert. Når vi skriver. skjer følgende: Konstruktører Bruk av konstruktører når vi opererer med "enkle" klasser er ganske ukomplisert. Når vi skriver Punkt p = new Punkt(3,4); class Punkt { skjer følgende: int x, y; 1. Det settes av plass i

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1010 Objektorientert programmering Dato: 4. juni 2015 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 6 sider. Vedlegg:

Detaljer

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr

Fra Python til Java. En introduksjon til programmeringsspråkenes verden. Dag Langmyhr Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et eksempel Klasser

Detaljer

(MVC - Model, View, Control)

(MVC - Model, View, Control) INF1010 - våren 2008 Modell - Utsyn - Kontroll (MVC - Model, View, Control) Stein Gjessing Inst. for informatikk Et bankprogram Vi skal lage et program som håndterer kontoene i en bank. En konto eies av

Detaljer

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

Kapittel 13: Grafiske brukergrensesnitt. Java som første programmeringsspråk Kapittel 13: Grafiske brukergrensesnitt Forelesningsnotater for: Java som første programmeringsspråk Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk Forlag, 2003. ISBN 82-02-23274-0

Detaljer

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

GUI 3 JavaFX. Mer interaksjon Hvordan gi input :l programmet. INF1010 Stein Michael Storleer GUI 3 JavaFX Mer interaksjon Hvordan gi input :l programmet INF1010 Stein Michael Storleer Innhold 1. Ta opp tråden fra sist 2. Input med TextField 3. Anonyme klasser 4. Lytte på alle noder i et grid 5.

Detaljer

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

Kapittel 13: Grafiske brukergrensesnitt. Java som første programmeringsspråk Kapittel 13: Grafiske brukergrensesnitt Forelesningsnotater for: Java som første programmeringsspråk Khalid Azim Mughal, Torill Hamre, Rolf W. Rasmussen Cappelen Akademisk Forlag, 2003. ISBN 82-02-23274-0

Detaljer

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

. Ved sensur vl1 ahe bokstaverte deloppgaver (a, b, c,...) telle like mye. ~KSAMENSOPPGA VE Les gjennom hele oppgavesettet før du begynner A besvare deloppgavene.. Hold deg til de identifikator-navnene som er brukt i oppgaveteksten, dog med unntak av metodenes parametemavn som

Detaljer

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

INF1010, 22. mai Prøveeksamen (Eksamen 12. juni 2012) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF, 22. mai 23 Prøveeksamen 23 (Eksamen 2. juni 22) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Oppgave a Tegn klassehierarkiet for de 9 produkttypene som er beskrevet over. Inkluder også

Detaljer

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

Detaljer

EKSAMEN I FAG TDT4180 MMI Onsdag 28. mai 2008 Tid: kl. 0900-1300

EKSAMEN I FAG TDT4180 MMI Onsdag 28. mai 2008 Tid: kl. 0900-1300 NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP Faglig kontakt under eksamen: Hallvard Trætteberg, Tlf: 73 59 34 43 EKSAMEN I FAG TDT4180 MMI Onsdag 28.

Detaljer

Oblig 4Hybelhus litt mer tips enn i oppgaven

Oblig 4Hybelhus litt mer tips enn i oppgaven Oblig 4Hybelhus litt mer tips enn i oppgaven lørdag 19. okt 2013 Arne Maus Obligatorisk oppgave 4 Gulbrand Grås husleiesystem I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer,

Detaljer

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr

IN1010. Fra Python til Java. En introduksjon til programmeringsspråkenes verden Dag Langmyhr IN1010 Fra Python til Java En introduksjon til programmeringsspråkenes verden dag@ifi.uio.no Oversikt Introduksjon Python Java Noe er likt Noe bare ser anderledes ut Noe er helt forskjellig Et par eksempler

Detaljer

Obligatorisk oppgave 4: Lege/Resept

Obligatorisk oppgave 4: Lege/Resept Obligatorisk oppgave 4: Lege/Resept INF1010 Frist: mandag 27. mars 2017 kl. 12:00 Versjon 1.0 (111c894 ) Innhold 1 Innledning 1 1.1 Begreper................................ 2 2 Pasienter 2 3 Leger og lister

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO BOKMÅL Det matematisk-naturvitenskapelige fakultet Eksamen i : Eksamensdag : Torsdag 2. desember 2004 Tid for eksamen : 09.00 12.00 Oppgavesettet er på : Vedlegg : Tillatte hjelpemidler

Detaljer

2 Om statiske variable/konstanter og statiske metoder.

2 Om statiske variable/konstanter og statiske metoder. Gaustadbekkdalen, januar 22 Litt om datastrukturer i Java Av Stein Gjessing, Institutt for informatikk, Universitetet i Oslo Innledning Dette notatet beskriver noe av det som foregår i primærlageret når

Detaljer

Argumenter fra kommandolinjen

Argumenter fra kommandolinjen Argumenter fra kommandolinjen Denne veiledningen er laget for å vise hvordan man kan overføre argumenter fra kommandolinjen til et program. Hvordan transportere data fra en kommandolinje slik at dataene

Detaljer

La oss begynne med en repetisjon av hva som skjer når du kjører Javaprogrammet

La oss begynne med en repetisjon av hva som skjer når du kjører Javaprogrammet K A P I T T E L 18 Tråder N år et program kjøres, utføres programsetningene i en bestemt rekkefølge. En tråd er det samme som denne programflyten, og i dette kapitlet skal vi se på hvordan vi starter og

Detaljer

Graphics. Grafikk. Praktisk sett: Koordinatsystemet. kodeeksempel

Graphics. Grafikk. Praktisk sett: Koordinatsystemet. kodeeksempel Grafikk Grafikk er den framstillingen vi gir objekter på en todimensjonal flate. Det er en regnemessig tung operasjon å regne ut hvordan man skal framstille to og tre dimensjonale objekt på en todimensjonal

Detaljer

Klask-en-Muldvarp. Introduksjon. Skrevet av: Basert på MITs "MoleMash for App Inventor 2"-guide (

Klask-en-Muldvarp. Introduksjon. Skrevet av: Basert på MITs MoleMash for App Inventor 2-guide ( Klask-en-Muldvarp Skrevet av: Basert på MITs "MoleMash for App Inventor 2"-guide (http://appinventor.mit.edu/explore/ai2/molemash.html) Oversatt av: Hanne Johnsen Kurs: Appinventor Tema: App, Blokkbasert

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i INF1000 Grunnkurs i objektorientert programmering Eksamensdag: 13. juni 2006 Tid for eksamen: 9.00 12.00 Oppgavesettet er på 5

Detaljer

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011)

Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag ukeoppg. 6: 28. sep - 4. okt (INF1000 - Høst 2011) Løsningsforslag til oppgave 7, 8, og 9 mangler Klasser og objekter (kap. 8.1-8.14 i "Rett på Java" 3. utg.) NB! Legg merke til at disse

Detaljer

TDT4100 Objektorientert programmering

TDT4100 Objektorientert programmering Eksamensoppgave i TDT4100 Objektorientert programmering Torsdag 12. august 2010, kl. 09:00-13:00 Oppgaven er utarbeidet av faglærer Hallvard Trætteberg og kvalitetssikret av Svein Erik Bratsberg. Kontaktperson

Detaljer

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

Antall sider (inkl. forsiden): 7. Alle trykte og håndskrevne Side 1 av 7 Bokmålstekst Emne: PROGRAMMERING (nytt pensum, 10 studiep.) Grupper: laa, lab, lac, lia, lib, lic Eksamensoppgaven best~r av: Tillatte hjelpemidler: Antall sider (inkl. forsiden): 7 Alle trykte

Detaljer

Object interaction. Innhold. Abstraksjon 03.09.2007. Grunnleggende programmering i Java Monica Strand 3. september 2007.

Object interaction. Innhold. Abstraksjon 03.09.2007. Grunnleggende programmering i Java Monica Strand 3. september 2007. Object interaction Grunnleggende programmering i Java Monica Strand 3. september 2007 1 Innhold Til nå: Hva objekter er og hvordan de implementeres I klassedefinisjonene: klassevariable (fields), konstruktører

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Side 1 Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Eksamensdag: Onsdag 4. juni 2014 Tid for eksamen: 9:00-15:00 Oppgavesettet er på

Detaljer

1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo

1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo INF1010, 26. februar 2014 1. Krav til klasseparametre 2. Om å gå gjennom egne beholdere (iteratorer) Stein Gjessing Inst. for Informatikk Universitetet i Oslo Vi tar utgangspunkt i dette programmet for

Detaljer

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

Eksamensoppgave Vår 2012 Ordinær eksamen Bokmål. Videregående programmering. Eksamensdato: 06.06.2012. Studium/klasse: 2. klasse Eksamensoppgave Vår 2012 Ordinær eksamen Bokmål Fag: Videregående programmering Eksamensdato: 06.06.2012 Studium/klasse: 2. klasse Emnekode: IFT205 Eksamensform: Skriftlig Antall sider: 3 (inkludert denne)

Detaljer

UNIVERSITETET I OSLO

UNIVERSITETET I OSLO UNIVERSITETET I OSLO Det matematisk-naturvitenskapelige fakultet Eksamen i: INF1010 Objektorientert programmering Dato: 9. juni 2016 Tid for eksamen: 09.00 15.00 (6 timer) Oppgavesettet er på 7 sider.

Detaljer

INF1010. Grensesnittet Comparable<T>

INF1010. Grensesnittet Comparable<T> INF1010 21. februar 2013 Grensesnittet Comparable Stein Michael Storleer Institutt for Informatikk Universitetet i Oslo Interface med parametre interface Utkledd { // T er klassen jeg er utkledd

Detaljer

Socket og ServerSocket

Socket og ServerSocket Side 1 av 5, socket og klient-tjener, V. Holmstedt, HiO 2006 Dette dokumentet er revidert den 29.8.2006, kl:12:30. Det er foretatt rettelser i begge versjoner av klassen A_Server. Socket og ServerSocket

Detaljer

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

IN1010 våren 2018 Tirsdag 15. mai. Repetisjon av subklasser og tråder. Stein Gjessing Institutt for informatikk Universitetet i Oslo IN1010 våren 2018 Tirsdag 15. mai Repetisjon av subklasser og tråder Stein Gjessing Institutt for informatikk Universitetet i Oslo 1 Klassehierarki: Personbil Bil Klasser - Subklasser class Bil {

Detaljer

Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo

Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo Inf 1010 - Våren 2011 Tråder del 1 Parallelle programmer og felles data Stein Gjessing,, Universitetet i Oslo 1 2 Oversikt Hva er parallelle programmer? Hvorfor parallelle programmer? Hvordan kan de'e

Detaljer

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser

INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser Emneoversikt subklasser INF1010 våren 2008 Uke 4, 22. januar Arv og subklasser Stein Gjessing Institutt for informatikk Mange flere eksempler på fellesøvelsene og neste forelesning 1 Generalisering - spesialisering

Detaljer

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

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på

Detaljer

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 %

Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 % Eksamen INF1010 V2009 Del B prøveeksamen V2010 Vekt 60 % Stein Gjessing Institutt for Informatikk Universitetet i Oslo 1 Oppgave 10 Tegning av datastrukturen (vekt 5% av del B) Tegn datastrukturen til

Detaljer

Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo

Stein Gjessing, Ins$tu' for informa$kk, Universitetet i Oslo Inf 1010 Våren 2010 Tråder del 1 Parallelle programmer og felles data Stein Gjessing,, Universitetet i Oslo 1 Oversikt Hva er parallelle programmer? Hvorfor parallelle programmer? Hvordan kan de'e skje

Detaljer

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

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; } Arv Arv (eng: inheritance) er en mekanisme for å bygge videre på eksisterende klasser og regnes ofte som varemerket til objektorientert programmering. Når arv brukes riktig, kan den gjøre koden ryddigere

Detaljer

Forelesning inf Java 1

Forelesning inf Java 1 Forelesning inf1000 - Java 1 Tema: Javas historie Bestanddelene i et Java-program Programvariabler Ole Christian Lingjærde, 22. august 2012 Litt Java-historikk The Green Team I 1991 opprettet Sun Microsystems

Detaljer

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk

Stein Gjessing. Institutt for informatikk. Universitetet i Oslo. Institutt for informatikk INF1010 11. mai 2017 Monitorer med kritiske regioner og passive venting innbygget i Java - Kommunikasjon mellom prosesser i Java (Ikke pensum i INF1010) Stein Gjessing Universitetet i Oslo 1 Repetisjon:

Detaljer

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det?

1. Finn klassene (hvilke objekter er det i problemet) 1. Dataene som beskriver problemet (hvilke objekter har vi og hvor mange klasser er det? Obligatorisk oppgave 3 Gulbrand Grås husleiesystem Oblig 3hus litt mer tips enn i oppgaven I denne oppgaven skal vi se på hans studenthus Utsyn. Utsyn består av 3 etasjer, nummerert fra -3. I hver etasje

Detaljer

Løsningsforslag Test 2

Løsningsforslag Test 2 Løsningsforslag Test 2 Oppgave 1.1: Interface definerer et grensesnitt som kan implementeres av flere klasser. Dette gir en standardisert måte å kommunisere med objekter av en eller flere relaterte klasser.

Detaljer

Innføring i bruk av CGI4VB

Innføring i bruk av CGI4VB Innføring i bruk av CGI4VB Her kommer en enkel innføring i bruk av modulen CGI4VB som kan benyttes for å lage CGI programmer i Visual Basic. CGI er en forkortelse for Common Gateway Interface den kommunikasjonsprotokollen

Detaljer

1. NetBeans IDE: Lage en enkel mobilapplikasjon

1. NetBeans IDE: Lage en enkel mobilapplikasjon Avdeling for informatikk og e-læring, Høgskolen i Sør-Trøndelag NetBeans IDE: Lage en enkel mobilapplikasjon Mildrid Ljosland/Lene Hoff 09.09.2008 Lærestoffet er utviklet for faget SO350D J2ME for programmering

Detaljer

INF Notater. Veronika Heimsbakk 10. juni 2012

INF Notater. Veronika Heimsbakk 10. juni 2012 INF1010 - Notater Veronika Heimsbakk veronahe@student.matnat.uio.no 10. juni 2012 1 Tilgangsnivåer 2 CompareTo Modifier Class Package Subclass World public Y Y Y Y protected Y Y Y N no modifier Y Y N N

Detaljer

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

Innhold. Forord Det første programmet Variabler, tilordninger og uttrykk Innlesing og utskrift...49 Innhold Forord...5 1 Det første programmet...15 1.1 Å kommunisere med en datamaskin 16 1.2 Programmeringsspråk 17 1.3 Et program som skriver på skjermen 18 1.4 Kompilering og kjøring 19 1.5 Kommentarer

Detaljer

EKSAMEN I FAG TDT4180 MMI Torsdag 27. mai 2010 Tid: kl. 0900-1300

EKSAMEN I FAG TDT4180 MMI Torsdag 27. mai 2010 Tid: kl. 0900-1300 NORGES TEKNISK-NATURVITENSKAPELIGE UNIVERSITET INSTITUTT FOR DATATEKNIKK OG INFORMASJONSVITENSKAP Faglig kontakt under eksamen: Dag Svanæs, Tlf: 73 59 18 42 EKSAMEN I FAG TDT4180 MMI Torsdag 27. mai 2010

Detaljer

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

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur Godkjent oblig 1? Les e-post til din UiO-adresse Svar på e-post fra lablærer Ingen godkjenning før avholdt møte med lablærer Godkjentlistene brukes ikke til å informere om status for obligene Ta vare på

Detaljer