Grafiska användargränssnitt, forts

Storlek: px
Starta visningen från sidan:

Download "Grafiska användargränssnitt, forts"

Transkript

1 Grafiska användargränssnitt (GUI) GUI byggs av widgets (grafiska) som t ex fönster, knappar, in- och utmatningsfält, ritytor, I Java kallas sådana delar komponenter. I Java används klasser ur awt (abstract window toolkit) som är en betydande del av Javas API Grafiska användargränssnitt, forts Det finns flera olika typer av grafiska komponenter i Java: Button, Checkbox, List, Choice, Lable, TextField, TextArea, Scrollbar En kontainer är en komponent som kan innehålla andra komponenter. En komponent läggs in i en kontainer med metoden add(component) public class Demonstrate { public static void main (String args []) { Frame f = new Frame("Test-Window"); f.setsize(300, 100); f. setvisible(true); Argumentet till Frames konstruktor är fönstrets rubrik, setsize(300, 100) sätter storleken på fönstret och setvisible(true) gör att fönstret blir synligt. Instanser av Panel brukar användas för att organisera de grafiska komponenterna. Kjell Lindqvist Sid 217 Kjell Lindqvist Sid 218 awt Fönstret får automatiskt en knapp för att avsluta, en knapp för att "ikonifiera" och en knapp för att expandera fönstret. Programmet terminerar inte eftersom det väntar på musrörelser, musknapptryckningar och tangenttryckningar (på tangentbordet). testwindow måste tillhandahålla en "fönsterlyssnare". public class testwindow2 extends Frame{ public testwindow2 (String title) { super(title); addwindowlistener(new WindowAdapter() { public void windowclosing(windowevent e) { System.exit(0); ); setsize(300, 100); setvisible(true) (); public static void main(string[] args) { new testwindow2("testwindow"); Object Component Color Font JTextComponent JTextField JTextArea Klasshierarki Container Panel JComponent JPanel AbstractButton JToggleButton JButton JMenuItem JCheckBox JRadioButton JRadioButtonMenuItem JCheckBoxMenuItem JMenu Applet JApplet JComboBox JLabel JList JMenuBar JPane JPopupMenu JScrollbar JScrollPane JTable JTree Kjell Lindqvist Sid 219 Kjell Lindqvist Sid 220

2 Swing Viktiga paket för fönsterhantering AWT - Abstract Windowing Toolkit (java.awt) Swing (javax.swing) Händelser, lyssnare (java.awt.event) AWT är det ursprungliga fönsterpaketet, Swing är det nyare. OBS att AWT dock innehåller en hel del som även används i Swing, t.ex klasserna Graphics och Color. AWT abstrakt i den meningen att det är "oberoende" av operativsystem AWT använder i grunden så kallade "native widgets", operativsystemets egna komponenter AWT innehåller dels komponenter (widgets) dels klasser för bilder och andra GUI-objekt. Swing Swing är än mer oberoende av operativsystem än AWT Swing använder så kallade "lättviktskomponenter" programmerade i Java Swing-komponenterna ersätter motsvarade klasser i AWT (dessa prefixas med J, som JButton) Swing har omfattande stöd för olika GUI-delar, t.ex visning av HTML Swing har rykte om sin att vara långsamt och komplext - det är inte längre sant, nya versioner är snabbare Kjell Lindqvist Sid 221 Inmatningstyper Request mode Vänta tills dess att något sker tex på inmatning via tangentbordet eller klick på mus traditionell inmatning från tangentbord, scanf (C), readln (Pascal) sensor.waitbutton(); gc.displaystring("inmatning ", sensor.pos()); Där sensor är ett (tänkt) objekt som ger oss möjlighet att läsa av inmatningsverktygens status (dvs tex tangentbord och mus) Samplad/pollad Kontrollera status för enhet Omedelbar avläsning tex är någon knapp på musen nertryckt while(sensor.anybuttonpressed()) { pen.moveto(sensor.mousepoint()); Händelsestyrd Förändringar hos enheter placeras i en kö intresserade program meddelas om att händelse inträffat från början av kön (flera kan alltså meddelas om samma händelse) Kjell Lindqvist Sid 222 Inmatningstyper, forts Det är sedan upp till varje program att själv bestämma hur det skall (eller inte skall) reagera Exempel, en metod som reagerar om händelsen dubbeklick inträffar public void doubleclickevent(event event) { frame.setlocation(event.position()); Eventmodell 1.1 Förutom de vanliga styrstrukturerna sekvens, selektion, iteration och rekursion, används i Java ofta händelsebaserade kontrollstrukturer. Händelsebaserad programmering ("event-oriented programming") blev populärt i och med GUIs där "callbacks" var vanliga. En callback är en procedur som anropas av kod som ligger "utanför" mitt eget program. Callbacks/händelser är ett naturligt sätt att programmera grafiska användargränssnitt eftersom interaktionen består av olika händelser som användaren genererar. Inmatning i Java bygger på händelser. När något händer i användargränssnittet skickas ett meddelande om detta till en lyssnare. En lyssnare är ett objekt som är kopplat till en komponent och får meddelanden ("events") från denna. Det finns flera olika typer lyssnare, en för varje kategori av händelser. Lyssnarna är oftast interface vars metoder man implementerar i sin egen lyssnare. Kjell Lindqvist Sid 223 Programmet byggs upp på ett sådant sätt att det är "berett" att reagera på olika händelser/interaktioner. Ofta används begreppet "ramverk" om klassbibliotek där man "pluggar in" egna klasser vars metoder anropas från ramverksklasserna. Java 1.1 och senare har en modell där man definierar objekt som tar hand om händelser som sker i komponenter i gränssnitten. Kjell Lindqvist Sid 224

3 Händelselyssnare Lyssnare Händelser till ett fönster eller komponent tas omhand av händelselyssnare Beroende av typ av lyssnare måste olika API:er implementeras. Olika typer av lyssnare tar hand om olika typer av händelser, MouseListener, WindowListener, FocusListener, ActionListener, osv. Namnet är uppbyggt på följande sätt: HändelsetypListener Till varje lyssnare finns ett speciellt interface som beskriver vilka metoder som lyssnaren implementerar Lyssnarna och deras interface tillhör ett gemensamt package nämligen: java.awt.event Lyssnarna är oftast interface vars metoder man implementerar i sin egen lyssnare. Två olika tekniker: Använd en lyssnarklass för flera komponenter Använd en egen lyssnarklass för varje komponent Man kan med fördel använda en inre klass för varje lyssnare. Kjell Lindqvist Sid 225 Kjell Lindqvist Sid 226 Exempel import java.awt.event.*; public class MyFrame1 extends Frame implements WindowListener{ public void windowopened(windowevent e) { public void windowclosing(windowevent e) { System.exit(0); public void windowclosed(windowevent e) { public void windowiconified(windowevent e) { public void windowdeiconified(windowevent e) { public void windowactivated(windowevent e) { public void windowdeactivated(windowevent e) {... public static void main(string [] args) { MyFrame1 frame = new MyFrame1(); frame.settitle("fönster som lyssnar efter fönsterhändelser"); frame.setsize(400, 300); frame.addwindowlistener(frame); frame.setvisible(true); Kjell Lindqvist Sid 227 Adaptorer och händelselyssnare För att förenkla användningen av händelselyssnare finns ett antal fördefinierade adaptorer. Dessa adaptorer implementerar alla metoder deklarerade i den aktuella lyssnarens gränssnitt. En adaptor implemeneterar endast tomma metoder. Genom att subklassa en adaptor och använda den som lyssnare så räcker det att endast skriva om dom metoder som verkligen gör något, så slipper man implementera massa metoder utan metodkropp. Dessa adaptorer är speciellt enkla att använda tillsammans med anonyma inre klasser. Applets En applet är en applikation som hanteras av en web browser. Metoder som anropas automatiskt: 1. public void init() anropas en gång då en applet skapas 2. public void start() varje gång man återvänder till HTML sidan 3. public void paint(graphics g) varje gång som en applet behöver ritas om 4. public void stop() då man lämnar HTML sidan 5. public void destroy() då en applet "dör" Kjell Lindqvist Sid 228

4 ComponentAdapter ContainerAdapter FocusAdapter Adaptorer ActionListener AdjustmentListener Componentlistener ContainerListener Subklasser: BorderLayout Layoutmanager är default i Frame och Dialog. Placerar komponenter i vädersträck KeyAdapter FocusListener ItemListener 1 - NORTH 2 - CENTER 3 - SOUTH MouseAdapter MouseMotionAdapter WindowAdapter KeyListener MouseListener MouseMotionListener WindowListener TextListener 1 - WEST 2 - CENTER 3 - EAST 4 - NORTH 5 - SOUTH 1 - WEST 2 - CENTER 3 - EAST Kjell Lindqvist Sid 229 Kjell Lindqvist Sid 230 Layoutmanager, forts GridLayout ser till att alla komponenter är lika stora. Matris för komponenter. Artgumenten är: Antal rader Antal kolumner Horisontellt avstånd mellan ruterna Vartikalt avstånd mellan ruterna. FlowLayout Är default för Panel. Layoutmanager, forts Placerar komponenter från vänster till höger, ny rad då det behövs. Följer med då fönstrets storlek ändras. import java.applet.*; public class DemoGridLayout extends Applet { public void init() { super.init(); setlayout(new GridLayout(5, 2, 5, 5)); Kjell Lindqvist Sid 231 Kjell Lindqvist Sid 232

5 Layoutmanager, forts GridBagLayout Mest generell. Delar ytan i flera celler. Restriktioner bestämmer hur komponenterna skall placeras och deras utsträckning. GridBagLayout får sina restriktioner från GridBagConstraints GridBagLayout gbl = new GridBagLayout(); setlayout(gbl); GridBagConstraints gbc = new GridBagConstraints(); gbc.weightx = 1.0; // sprid ut horisontellt gbc.weighty = 1.0; // sprid ut vertikalt gbc.fill = GridBagConstraints.BOTH; // sprid ut horisontellt gbc.gridx = 1; //övre vänstra hörnet i panelen är på rad 2 gbc.gridy= 2; // och 3:e kolumnen gbc.gridwidth = 2; // panelen sprids över 2 kolumner gbc.gridheight = 1 // och en rad gbl.setconstraints(apanel, gbc); add(apanel); Exempel knappraden tabellen til vänster listan till höger ledtexten nederst gridx gridy gridwidth gridheight textboxen fill NONE BOTH BOTH NONE HORIZONTAL anchor WEST CENTER CENTER EAST WEST Kjell Lindqvist Sid 233 Kjell Lindqvist Sid 234 Ramverk Ett framework beskriver hur ett problem skall brytas ner. Vanlig situation: Användarkod kod i klassbibliotek Med användning av framework blir situationen omvänd: FrameWork Användarkod Hollywood-principen: ring inte oss, vi ringer er! Kjell Lindqvist Sid 235 Menyer MenuBar menubar = new MenuBar(); Menu filemenu = new Menu("File"); MenuItem fileopen = new MenuItem("Open"); MenuItem fileclose = new MenuItem("Close"); setmenubar(menubar); menubar.add(filemenu); filemenu.add(fileopen); filemenu.add(fileclose); // Deal with menu items: public boolean action (Event e, Object o) { if (e.target == fileopen) { FileDialog dialog = new FileDialog(this, "Load Movies"); dialog.setfile("*.movies"); dialog.show(); String file = dialog.getfile(); System.out.println(file); if (file!= null) { setmovievector(file); dialog.dispose(); return true; Kjell Lindqvist Sid 236

6 Menyer, forts else if (e.target == filemenuexit) { System.exit(0); return true; else {return false; // Deal with close button: public boolean handleevent(event e) { switch (e.id) { case Event.WINDOW_DESTROY: System.exit(0); return true; default: return super.handleevent(e); meny (JMenu) menypost (JMenuIte menylinje (JMenuBar) Menyer knapp (JButton) (JToolBar) Knappraden på vanlig plats Fildialog: FileDialog dialogvariabel = new FileDialog(this, titelsträng) Restriktioner: dialogvariabel.setfile(filename, pattern); extrahera filen som resultat av en fildialog: file-dialogvariabel.getfile(); Knappraden har dragits Till en egen plats Kjell Lindqvist Sid 237 Kjell Lindqvist Sid 238 Trådar Då vi startar ett program så startar vi också en process. Flera processer kan exekvera samtidigt (äkta parallellitet eller kvasiparallellt) (multitasking). Även ett program kan initiera flera processer (uppdelning av komplicerade beräkningar, utskrift i bakgrunden, ). Sådana lokala processer kallas trådar. Vid kvasiparallell exekvering fördelar systemet tiden mellan trådarna. Byte av tråd kallas kontextbyte. Vi kan ha flera processer där var och en har ett antal trådar. Man kan tänka sig två metoder att fördela tiden mellan trådarna: Tråden själv tar en paus i exekveringen. Operativsystemet fördelar tiden mellan trådarna. Mekanismen i java är beroende av interpretatorn. Trådar, forts Normalt har ett program endast en exekveringstråd, den som startar i mainmetoden och sedan via metodanrop flyttar exekveringen till andra metoder i programmet. Med endast en tråd är det möjligt att i varje ögonblick säga att programmet exekverar en specifik programsats. Med flera trådar är det möjligt att exekvering pågår på flera ställen i programmet samtidigt. Då vi inte har möjlighet till "äkta" parallellitet så sker exekveringen "kvasiparallellt" d v s vi simulerar parallelliteten. Trådar kan användas i en mängd olika syften: programmet har flera olika parallella aktiviteter att hantera Ex: En tråd sköter kommunikation med användaren, en annan tråd sköter kommunikation med en server. programmet innehåller flera olika objekt som skall kunna agera självständigt Ex: En animeringssekvens där varje figur hanteras av en tråd. programmet hanterar vissa uppgifter i bakgrunden. Ex: Rapporter skrivs ut medan användaren fortsätter att arbeta. Kjell Lindqvist Sid 239 Kjell Lindqvist Sid 240

7 Problem med trådar Resurser kan tas i anspråk av flera trådar och operationerna kan då komma i konflikt med varandra. Vi kan råka ut för deadlock och utsvältning. En tråds livscykel Trådar måste kunna synkroniseras (invänta resultat från andra trådar). tråd 1 Initiering tråd 2 Fork-linje Del ett av beräkningen Del två av beräkningen Synkronisering Beräkning som kräver båda resultaten Kjell Lindqvist Sid 241 Kjell Lindqvist Sid 242 static void sleep(long millis) Metoder söver ner den tråd som exekverar static void sleep(long millis, int nanos) söver ner den tråd som exekverar void start() void final interrupt() static yield() startar exekveringen av tråden stoppar exekveringen av tråden stoppar tillfälligt den tråd som nu exekverar Det kan se konstigt ut med statiska metoder men om de anropas i en tråds metod arbetar de ju på den tråden eftersom det är den som exekverar. Ingen av metoderna ovan ersätts vanligen, man anropar dem vid behov. Animering Exempel med trådar är en enkel animering. Appleten nedan visar en text som skyms av en oval som ändrar storlek. Exempel import java.applet.*; public class WelcomeAnimation extends Applet implements Runnable { static final int sleepingtime = 100; static final String msg = "Welcome to the World of Internet Programming"; private Font font; private int size = 100; private boolean shrinking = true; private Thread animator = null; public void init() { super.init(); font = new Font("Times", Font.BOLD, 12 ); setbackground( Color.white ); public void start() { // Appletens start(), *ej* trådens animator = new Thread( this ); // Skapa en tråd animator.start(); public void stop() { animator = null; Kjell Lindqvist Sid 243 Kjell Lindqvist Sid 244

8 ; Exempel, forts public void paint( Graphics g) { g.setcolor(color.red); g.filloval(230-size*3/2, 97-size/2, size*3, size); if (shrinking) { size = size - 2; if (size == 0) shrinking = false; else { size = size + 2; if (size == 100) shrinking = true; g.drawstring( msg, 100, 100); public void run() { while (true) { repaint(); try { Thread.sleep(sleepingTime); catch (InterruptedException e) { System.exit(1); public void destroy() { if ( animator!= null ) { animator = null; // För att hjälpa skräphanteraren... Kjell Lindqvist Sid 245 Skapa en tråd I Java har vi två möjligheter att skapa trådar: skriva en subklass till Thread implementera gränssnittet Runnable Om man skapar en subklass till Thread så definieras (normalt) metoden run om: class mythred extends Thread { public void run() { Eller då vi implementerar Runnable: class mythred implements Runnable { public void run() { Tänk på att då run terminerar så dör tråden. run innehåller oftast en oändlig loop! Då vi implementerar Runnable så måste alla metoder från Runnable implementeras! Kjell Lindqvist Sid 246 Dubbelbuffring Appleten i föregående avsnitt kanske (det beror på nätbläddrare, dator, andra appliktioner, etc ) flimrar på ett obehagligt sätt. Det finns flera tekniker att minska flimret och en vanlig teknik är s.k. dubbelbuffring, d.v.s man ritar sin bild i ett "fönster" i minnet och överför sedan hela bilden till skärmen. I Java är det lätt att ordna detta genom att ersätta metoden update(): import java.applet.*; public class WelcomeAnimationSmooth extends Applet implements Runnable { static final int sleepingtime = 100; static final String msg = "Welcome to OOP1"; private Font font; private int size = 100; private boolean shrinking = true; private Thread animator = null; Graphics offscreengraphics; /* New in double buffered version */ Image offscreenimage; /* New in double buffered version */ Dimension offscreendim; /* New in double buffered version */ Kjell Lindqvist Sid 247 Dubbelbuffring, forts public void init() { super.init(); font = new Font("Times", Font.BOLD, 12 ); setbackground( Color.white ); public void start() { animator = new Thread( this ); animator.start(); public void stop() { animator = null; public void paint( Graphics g) { update(g); public void update( Graphics g) { /* New in double buffered version */ Dimension d = getsize(); if (offscreengraphics == null ) { offscreendim = d; offscreenimage = createimage( d.width, d.height); offscreengraphics = offscreenimage.getgraphics(); Kjell Lindqvist Sid 248

9 Dubbelbuffring, forts offscreengraphics.setcolor( getbackground() ); offscreengraphics.fillrect(0,0,d.width,d.height); offscreengraphics.setcolor( Color.red ); offscreengraphics.filloval(230-size*3/2, 97-size/2, size*3, size); if (shrinking) { size -= 2; if (size == 0) shrinking = false; else { size += 2; if (size == 100) shrinking = true; offscreengraphics.drawstring( msg, 100, 100); g.drawimage( offscreenimage, 0,0, this); public void run() { while (true) { repaint(); try { Thread.sleep(sleepingTime); catch (InterruptedException e) { System.exit(1); Kjell Lindqvist Sid 249 Olika trådar arbetar ibland på samma data. Synkronisering För att detta skall fungera krävs att trådarna synkroniseras så att inte en av trådarna läser data som inte finns, data som redan lästs av andra osv. Betrakta följande exempel: public class threadexample { private int counter = 0; public int nextcounter() { return counter++; Antag att två trådar t1 och t2 använder en instans av klassen: t1 läser värdet och finner att det är 0 t2 läser värdet och finner att det är 0 t1 adderar 1 till det tidigare värdet och skriver det nya värdet (1) till counter t2 adderar 1 till det tidigare värdet och skriver det nya värdet (1) till counter Den ena trådens uppdatering har gått förlorat! Kjell Lindqvist Sid 250 Låsning För att undvika konflikt av denna typ kan man låsa objektet under den tid det tar för trådens uppdatering. I Java har varje objekt ett associetat lås. En metod som använder en synchronized modifierare, får automatiskt ett lås på sin instans innan man kan fortsätta. Om instansen redan är låst blockeras metodanropet tills låset är släppt och man kan erhålla sitt lås. I vårt exempel ser det ut på följande sätt: public class threadexample { private int counter = 0; public synchronized int nextcounter() { return counter++; t1 vill läsa värdet och får ett lås, t1 finner att värdet är 0 t2 vill läsa värdet och får vänta t1 adderar 1 till det tidigare värdet och skriver det nya värdet (1) till counter samt släpper låset t2 får sitt lås, läser värdet (1) adderar 1 till det tidigare värdet och skriver det nya värdet (2) till counter samt släpper låset. Kjell Lindqvist Sid 251 Låsning, forts Det är möjligt för en metod att få ett lås på ett annat objekt än sitt eget. Man använder i detta fall ett synchronized block: public class synchronizedblockexample { private int counter = 0; public int getcounter() { return counter; public void setcounter(int i) { counter = i; synchronizedblockexample mycounter = new synchronizedblockexample(); synchronized (mycounter) { int currentcounter = mycounter.getcounter(); mycounter.setcounter(currentcounter++); Inget annat block kan komma åt mycounter under blockets exekvering. Kan detta skapa nya problem? Kjell Lindqvist Sid 252

10 Deadlock Om t1 har låst objektet obj1 och behöver objektet obj2 för sin fortsatta exekvering och t2 har låst objektet obj2 och behöver objektet obj1 för sin fortsatta exekvering uppstår s k deadlock. Detta måste programmeraren själv hantera. Exempel: På kursbiblioteket finns en applet visar en producent-konsument situation med ett lager med plats för 20 varor av något slag. Programmet har tre klasser: SynchronizerDemo, Producer och Consumer varav de båda senare exekverar i varsin tråd och alltså asynkront placerar varor i lagret respektive tar bort dem. För att göra det hela litet mer intressant finns en slumpmässig försening i klasserna. Dessutom kan man suspendera och starta om både producent och konsument. När lagret är fullt och producenten vill lägga in en vara (men alltå måste vänta) visas en röd markering på "producentsidan" och om lagret är tomt och konsumenten försöker hämta en vara visas motsvarande markering på "konsumentsidan". Lagret visas som en stapel i mitten. Kjell Lindqvist Sid 253 Synkronisering, forts Man använder kvalificeraren synchronized för att synkronisera metoder: alla metoder som inte får exekvera samtidigt deklareras synchronized. Under tiden som en synkroniserad metod exekverar kan alltså ingen annan synkroniserad metod startas. De andra verktygen för synkronisering är metoderna wait() och notify(). Man anropar wait() i en synkroniserad metod för att låta en annan tråd exekvera så att skälet till att man väntar kan upphävas. notify() är motsatsen till wait(): man väcker upp en väntande tråd efter att något skett med objektet, i vårt fall att lagret inte längre är tomt respektive att det inte längre är fullt. Det objekt som väcks är det som har egenrätt på SynchronizerDemo-instansen just nu, d.v.s. det objekt som startade en synkroniserad metod. Observera att metoden wait() alltså släpper "låset" på objektet SynchronizerDemo så att producenten eller konsumenten kan uppdatera objektet. Kjell Lindqvist Sid 254 Synkronisering, forts Konsumenten och producenten är båda arvtagare till Thread och har alltså redan ärvt gränssnittet Runnable genom Thread. Det kanske mest intressanta med klasserna är att ingendera innehåller några konstigheter: All synkronisering sker i klassen SynchronizerDemo. Allt Producer och Consumer gör är att producera och konsumera så fort de kan. Multithreading Multithreading är att flera trådar kan exekvera samtidigt i ett program. Vi har redan i exemplet SynchronizerDemo sett att två trådar kan exekvera samtidigt och till och med synkroniserat dem. Med multithreading avses oftast att flera trådar arbetar asynkront: t.ex. att en tråd utför något tungt i bakgrunden medan en annan tråd håller igång användargränssnittet. Kjell Lindqvist Sid 255 Schedulering av trådar Schemaläggningen av trådar är inte i detalj definierad i Java. Detta betyder att egenskaper i OS har inverkan på exekveringen. Följande gäller dock: trådar med högre prioritet exekverar före trådar med lägre prioritet. trådar med lika prioritet får omväxlande exekvera. trådar med lägre prioritet får endast exekvera då trådar med högre prioritet är blockerade. En tråds prioritet kan normalt vara någon av Thread.MIN_PRIORITY, Thread.NORMAL_PRIORITY och Thread.MAX_PRIORITY. En tråds prioritet avläses med getpriority() och sätts med setpriority(prioritet). Eftersom trådarnas prioritetskonstanter är definierade som: public final static int MIN_PRIORITY = 1; public final static int NORMAL_PRIORITY = 5; public final static int MAX_PRIORITY = 10; så är det tillåtet att sätta prioriteten till ett värde i [1..10]. Kjell Lindqvist Sid 256

11 Schedulering av trådar Metoden static native Thread currentthread() ger en referens till den exekverande tråden. Metoden final native boolean isalive() ger true om tråden startats och inte terminerat. Då vi använder trådar med olika prioritet kan en tråd med låg prioritet få vänta i oändlihet om vi succesivt startar trådar med högre prioritet detta kallas utsvältning. Varje tråd i java är medlem i en trådgrupp. Grupper av trådar En trådgrupp är en mekanism för att hantera gruppen som helhet i stället för att hantera individuella trådar. T ex kan man starta eller suspendera alla trådar i en grupp. En trådgrupp i Java implementeras med ThreadGroup class i java.lang package. Runtimesystemet placerar en tråd i en trådgrupp då den skapas. Man kan då välja att låta runtimesystemet placera tråden i en "default" grupp eller explicit placera den i en grupp. Då den placerats i en grupp kan den inte flyttas. Grupper av trådar Om man inte specifierar gruppen så blir den samma som den som den skapande tråden tillhör. Nya trådar placeras i en trådgrupp med konstruktorerna: public Thread(ThreadGroup group, Runnable target) public Thread(ThreadGroup group, String name) public Thread(ThreadGroup group, Runnable target, String name) En trådgrupp och en tråd kan konstrueras enligt följande: ThreadGroup mythreadgroup = new ThreadGroup("My Group of Threads"); Thread mythread = new Thread(myThreadGroup, "a thread for my group"); Man kan få tag i trådgruppen med metoden: thegroup = mythread.getthreadgroup(); Kjell Lindqvist Sid 257 Kjell Lindqvist Sid 258

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing

Föreläsning 15 (16) Historik (java.awt) Historik (javax.swing) Introduktion till Swing Föreläsning 15 (16) Introduktion till Swing Historik (java.awt) JDK 1.0 AWT (Abstract Window Toolkit) Paket för gränssnittsprogrammering Har en del nackdelar: Använder s.k. native code Stödjer endast komponenter

Läs mer

Frames, menyer och GUI-program

Frames, menyer och GUI-program 15 Frames, menyer och GUI-program Frames En frame-klass Om konstruktorer - igen Funktionella fönster Menyer Popupmenyer GUI-applikationer Dialogrutor Printerutskrift Kap 15: Sid 2 Frames Redan i kapitel

Läs mer

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 7 Erik Nilsson, Institutionen för Datavetenskap, LiU På denna föreläsning: Grafiskt användargränssnitt, Swing Layout och komponenter Göra

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F16:1 OOP Objekt-orienterad programmering Föreläsning 16 Grafiska användargränssnitt, GUI Ytor Komponenter Layout-managers Lyssnare GUI - Graphical User Interface OOP F16:2 Man skapar en yta (ett fönster)

Läs mer

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering

2I1049 Föreläsning 8. Grafiska gränssnitt i Java. AWT-komponenter. Grafiska gränssnitt, Java interface och händelsehantering 2I1049 Föreläsning 8 Grafiska gränssnitt, Java interface och händelsehantering 1 KTH-MI Peter Mozelius Grafiska gränssnitt i Java Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste

Läs mer

Java-concept och Swing. Swing low, sweet chariot

Java-concept och Swing. Swing low, sweet chariot Java-concept och Swing Swing low, sweet chariot Javas Swing-API En del av Javas standard-api API - application programming interface Ett klassbibiliotek som följer med Java Är designat med många OO-concept

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F16:1 OOP Objekt-orienterad programmering Föreläsning 16 Grafiska användargränssnitt, GUI Ytor Komponenter Layout-managers Lyssnare GUI - Graphical User Interface OOP F16:2 Man skapar en yta (ett fönster)

Läs mer

Objektorienterad programmering med Java Swing. Programexempel. Swing och AWT AWT. = Abstract windowing toolkit

Objektorienterad programmering med Java Swing. Programexempel. Swing och AWT AWT. = Abstract windowing toolkit Swing och AWT Objektorienterad programmering med Java Swing Sven-Olof Nyström Uppsala Universitet March 14, 2006 Skansholm: Kapitel 6 AWT = Abstract windowing toolkit använder värddatorns fönstersystem

Läs mer

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter

ITK:P1 Föreläsning 4. Grafiska gränssnitt i Java. AWT-komponenter ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering 1 DSV Peter Mozelius Grafiska gränssnitt i Java Efterfrågan på program med grafiskt gränssnitt har ökat avsevärt de senaste åren I Java finns

Läs mer

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se

Denna vecka. Idag. Grafiskt användarsnitt. Vi kommer att se 1 F18-20-2006 Denna vecka Måndag: Ett komplext problem Tisdag: Lektion. Kväll: Essäfrågan distribueras via webben. Dead-line onsdag 17 maj, kl 12.00. Inlämning elektroniskt och på papper. Onsdag: Grafik

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015 Objektorienterad Programkonstruktion Föreläsning 3 9 nov 2015 Kursnämnd Namn kommer... UML: Klassdiagram UML: Relationer Ärver från superklass Implementerar gränssnitt Dubbelriktad eller oriktad relation

Läs mer

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA för SY2 1999-03-17, kl 14.00-18.00 Hjälpmedel: En lärobok i Java programmering Återlämningstillfälle:

Läs mer

Mer om grafiska komponenter. Händelsestyrda program

Mer om grafiska komponenter. Händelsestyrda program Layout Managers TDA143 I1 Programmerade system Föreläsning 14 (OH-bilder 10) Mer om grafiska komponenter. Händelsestyrda program Utplaceringen av komponenter i en behållare styrs med en Layout Manager.

Läs mer

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016 Objektorienterad Programkonstruktion Föreläsning 3 7 nov 2016 Klass/instans Med hjälp av nyckelordet static kan vi bestämma att en metod eller ett fält ska tillhöra själva klassen i stället för en specifik

Läs mer

Malmö högskola 2007/2008 Teknik och samhälle

Malmö högskola 2007/2008 Teknik och samhälle Laboration Gui Avsikten med denna laboration är att du ska träna på att bygga grafiska användargränssnitt. Spara dina resultat i paketet laborationgui. Längst bak i laborationen finns fullständiga lösningar

Läs mer

Grafiska komponenter.

Grafiska komponenter. Grafiska komponenter. Kap J5-1 Grafiska användargränssnitt är det moderna alternativet till traditionell terminal-i/o. GUI-programmering bygger på en händelsestyrd flödeskontroll. I Java utförs GUI-programmeringen

Läs mer

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser?

Dagens program. Programmeringsteknik och Matlab. Vad är arv? Vi ärver från GregorianCalendar. Kan vi bygga vidare på existerande klasser? Programmeringsteknik och Matlab Övning 6 Dagens program Övningsgrupp 2 (Sal Q22/E32) Johannes Hjorth hjorth@nada.kth.se Rum 4538 på plan 5 i D-huset 08-790 69 02 Kurshemsida: http://www.nada.kth.se/kurser/kth/2d1312

Läs mer

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Föreläsnings 11 - GUI, Händelsestyrda program, MVC Föreläsnings 11 - GUI, Händelsestyrda program, MVC Josef Svenningsson Tisdag 20/11 Boken Denna föreläsning går igenom följande sektioner i boken: 10.1 och 10.2 11.1 Notera att kapitel 11 inte finns i boken

Läs mer

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Detta dokument är ett exempel, cirka andra hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling Fulltentamen vitsord: 3=28p, 4=38p, 5= 48p, max 60p. Max 30p i denna halvtentamen Hjälpmedel:

Läs mer

Laboration 15 Grafiskt användargränssnitt

Laboration 15 Grafiskt användargränssnitt Laboration 15 Grafiskt användargränssnitt Avsikten med denna laboration är att du ska träna på att skriva program som använder grafiskt användargränssnitt, dvs program som använder grafiska komponenter

Läs mer

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt

Programmeringsteknik II - HT18. Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt Programmeringsteknik II - HT18 Föreläsning 6: Grafik och händelsestyrda program med användargränssnitt (och Java-interface) Johan Öfverstedt 18-09-28 1 Förra gången: Arv och klasshierarkier Vi såg hur

Läs mer

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 AWT. Paket för hantering av grafik

Fortsättningskurs i programmering F 5. GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 AWT. Paket för hantering av grafik Fortsättningskurs i programmering F 5 GUI händelsehantering - undantagshantering Hugo Quisbert 20130205 1 Abstract Window Toolkit Paket för hantering av grafik dvs skapa grafisk användargränssnitt java.awt

Läs mer

Händelsestyrda program

Händelsestyrda program JavaD- 1 Program- eller händelsestyrd exekvering Händelsestyrda program JavaD- 2 Programstyrd exekvering I ett traditionellt program bestämmer programmet när det är dags att läsa indata, programmets exekvering

Läs mer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 2 (20p + 20p = 40 p) ) Lärare, jourhavande lärare :

Läs mer

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. LayoutManagers. Exempel på några av komponenterna MER Java Foundation Classes (JFC) Swing Swing Många klasser Vettigt att lära sig dem utantill - Tror inte det -... men det kan vara bra att ha en liten överblick över vad som finns - Idag (och med fortsättning

Läs mer

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

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets GUI (forts) Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets Sven-Olof Nyström Uppsala Universitet 18 mars 2005 Skansholm: Kapitel 6 Användaren kan kommunicera med programmet

Läs mer

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl Högskolan Dalarna sid 1 av 6 DI-institutionen Hans-Edy Mårtensson Sten Sundin FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 1. Grunderna i

Läs mer

Trådar. Aktiva objekt

Trådar. Aktiva objekt Föreläsning 11 Trådar 1 Aktiva objekt Det är välkänt från vardagslivet att saker händer samtidigt. Aktiva objekt gör saker på eget initiativ, medan passiva objekt endast gör saker när de blir ombedda.

Läs mer

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna MER Java Foundation Classes (JFC) Swing Swing Många klasser" Vettigt att lära sig dem utantill" - Tror inte det" -... men det kan vara bra att ha en liten överblick över vad som finns" - Idag (och med

Läs mer

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Objektorienterad Programmering DAT043. Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) Objektorienterad Programmering DAT043 Föreläsning 5 29/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Repetition: Arv En subklass ärver alla variabler och metoder från sin superklass.

Läs mer

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 18 Grundläggande programmering, STS 1, VT 2007. Sven Sandberg Föreläsning 18 Igår: Genomgång av dugga Rekursion Idag och på måndag: Om essän Lite, lite teori om konstanter Grafiska användargränssnitt Grundläggande

Läs mer

Föreläsning 3: Händelsestyrda program och användargränssnitt

Föreläsning 3: Händelsestyrda program och användargränssnitt (2 september 2015 F3.1 ) Föreläsning 3: Händelsestyrda program och användargränssnitt Idag Från sekventiella till händelsestyrda program Lyssnare Kontroller Layout för ordning av kontroller (2 september

Läs mer

Vad är ett Framework? 2203$ ) UHOlVQLQJ. Hollywood. Frameworks (FW) Frameworks. Konstruktion av fönster, gränssnitt och användning av grafik i Java

Vad är ett Framework? 2203$ ) UHOlVQLQJ. Hollywood. Frameworks (FW) Frameworks. Konstruktion av fönster, gränssnitt och användning av grafik i Java 2203$ ) UHOlVQLQJ Frameworks. Konstruktion av fönster, gränssnitt och användning av grafik i Java Innehåll, kort om: Frameworks Grafik med främst AWT Grafiska interaktiva applikationer Händelsehantering

Läs mer

5 Användargränssnitt. 5.1 AWT och Swing

5 Användargränssnitt. 5.1 AWT och Swing 5 Användargränssnitt 5.1 AWT och Swing AWT (Abstract Windowing Toolkit) är ett omfattande klassbibliotek för hantering av användargränssnitt i Java. Det är gjort så att applikationerna blir helt plattformsoberoende

Läs mer

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning. Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java

Läs mer

Lektion Händelsehanterare

Lektion Händelsehanterare Lektion Händelsehanterare Händelsehanterare kallas även lyssnare. En lyssnare har som uppgift att ta hand om olika händelser som kan inträffa. För att lyssnaren skall reagera på händelser måste den registreras

Läs mer

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson Lösningar till TENTAMEN I IXC003 SYSTEMUTVECKLING MED INTERNET/INTRANET, del 1 (5p) för IT3 och INTERNETPROGRAMMERING MED JAVA

Läs mer

Arv och Grafiska Användargränssnitt

Arv och Grafiska Användargränssnitt Arv och Grafiska Användargränssnitt Bildserie 5 Plattform Java är inte bara ett språk utan en s.k. plattform - Förutom språket finns en otrolig mängd färdiga klasser samlade i bibliotek (kallas också API:n,

Läs mer

Fönstersystem. Objektorientering och händelsebaserad programmering. Applikation. Interaktionstoolkit. Händelsehanterare och grafiktoolkit

Fönstersystem. Objektorientering och händelsebaserad programmering. Applikation. Interaktionstoolkit. Händelsehanterare och grafiktoolkit Objektorientering och händelsebaserad programmering Gustav Taxén gustavt@nada.kth.se Fönstersystem Applikation Interaktionstoolkit Händelsehanterare och grafiktoolkit Operativsystem Hårdvara 1 Frameworks

Läs mer

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p UMEÅ UNIVERSITET Datavetenskap 010530 LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p Betygsgränser 3 21,5-27 4 27,5-33,5 5 34-43 Uppgift 1. (4p) Hitta de fel som finns i nedanstående klass (det

Läs mer

Grafiska användargränssnitt i Java

Grafiska användargränssnitt i Java TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2018 Grafiska användargränssnitt i Java En genomgång av de viktigaste begreppen Alternativ 2 Från början fanns AWT, Abstract Window Toolkit Stora delar har

Läs mer

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 5 Innehåll Subklasser och arv Inledning till grafik (JFrame och JPanel).

Läs mer

GUI-programmering. Gustav Taxén Martin Berglund DH2640 Grafik och Interaktionsprogrammering VT 2008

GUI-programmering. Gustav Taxén Martin Berglund DH2640 Grafik och Interaktionsprogrammering VT 2008 GUI-programmering Gustav Taxén gustavt@csc.kth.se Martin Berglund mabe02@kth.se DH2640 Grafik och Interaktionsprogrammering VT 2008 WIMP Window Icon Menu Pointing device Modernt Gränssnitt Vad ingår i

Läs mer

Concurrency Saker händer samtidigt. Process En instans av ett program

Concurrency Saker händer samtidigt. Process En instans av ett program Concurrency Saker händer samtidigt Hur gör vi flera saker samtidigt på en dator? - Dela på en CPU - Flera CPU Flera processer på en dator. Operativsystemet (OS) tilldelar dem körtid (time slices, prioritet)

Läs mer

Lab5 för prgmedcl04 Grafik

Lab5 för prgmedcl04 Grafik Lab5 för prgmedcl04 Grafik Viktigt läs detta först:den här labblydelsen är ganska lång, detta betyder inte att labben tar lång tid.en hel del av lydelsen är anvisning om hur man går tillväga för att kunna

Läs mer

Grafiska användargränssnitt i Java

Grafiska användargränssnitt i Java jonas.kvarnstrom@liu.se 2017 Grafiska användargränssnitt i Java En genomgång av de viktigaste begreppen Alternativ 2 Från början fanns AWT, Abstract Window Toolkit Till stor del ersatt av Swing: Mer omfattande,

Läs mer

Kort om klasser och objekt En introduktion till GUI-programmering i Java

Kort om klasser och objekt En introduktion till GUI-programmering i Java Kort om klasser och objekt En introduktion till GUI-programmering i Java Klasser En klass är en mall för hur man ska beskriva på något. Antag att vi har en klass, Bil. Den klassen innehåller en lista på

Läs mer

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk

Läs mer

Projekt 2 XL. Observer-mönstret

Projekt 2 XL. Observer-mönstret Projekt 2 XL Objektorienterad modellering och diskreta strukturer Inför nästa projekt Lennart Andersson Reviderad 2011 10 24 2011 OMD 2011 F15-1 Schema designmöten OMD 2011 F15-2 Observer-mönstret 2 och

Läs mer

Grafiska användargränsnitt i Java. Föreläsning 7 Innehåll. Använda klasspaketet Swing. Klasspaket i Java. Grafiska användargränsnitt i Java

Grafiska användargränsnitt i Java. Föreläsning 7 Innehåll. Använda klasspaketet Swing. Klasspaket i Java. Grafiska användargränsnitt i Java Föreläsning 7 Innehåll Grafiska användargränsnitt i Java Grafiska användargränsnitt i Java Komponenter (fönster, knappar, ) Layout Händelsehantering (Hur man får någonting att hända när användaren t.ex.

Läs mer

SMD091 Lektion 9. Definition. Inkapsling. Lite repetition. Grafik. Gränssnitt Definition och Implementation. Sammansättning... Implementation.

SMD091 Lektion 9. Definition. Inkapsling. Lite repetition. Grafik. Gränssnitt Definition och Implementation. Sammansättning... Implementation. SMD091 Lektion 9 Inkapsling Lite repetition Grafik 1 2 Gränssnitt Definition och Implementation Sammansättning... Definition...är ofta det bästa sättet att använda funktionalitet i andra klasser. Ratt

Läs mer

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Micael Karlsson Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Micael Karlsson TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2000-03-22, kl 14.00-18.00 Hjälpmedel: En lärobok

Läs mer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 Laboration 3 Visualisering (och implementering) av sortering Exempel på grafik (med Swing-paketet) Frågor 1 Laboration 3 Visualisering

Läs mer

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets

Objektorienterad programmering i Java. Föreläsning 5 Kort om Java-Applets Objektorienterad programmering i Java Föreläsning 5 Kort om Java-Applets 1 Läsanvisningar Den här föreläsningen syftar till att ge en bild av vad en Java-Applet är och är ganska fristående från föregående

Läs mer

Trådar. Motivering. Många program måste kunna hålla på med flera saker samtidigt, till exempel. fleranvändarsystem.

Trådar. Motivering. Många program måste kunna hålla på med flera saker samtidigt, till exempel. fleranvändarsystem. Motivering Uppsala Universitet 21 april 2005 Många program måste kunna hålla på med flera saker samtidigt, till exempel fleranvändarsystem en webserver som måste kunna leverera flera websidor samtidigt

Läs mer

Malmö högskola 2007/2008 Teknik och samhälle

Malmö högskola 2007/2008 Teknik och samhälle Laboration 13 Avsikten med denna laboration är att du ska använda ett par nya grafiska komponenter. Dessutom ska du göra designen utan hjälp av en layout-manager (enklare). Börja med att skapa paketet

Läs mer

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02 Denna laboration är frivillig och syftar till att låta dig lära mer om grafik i java. Labben är ganska grundlig och går igenom vad du skall

Läs mer

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius

ITK:P1 Lektion 4. Lektion 4. Lektion 4. Att implementera en spelidé i Java. DSV Peter Mozelius ITK:P1 Att implementera en spelidé i Java DSV Peter Mozelius import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Lektion4 extends JFrame implements ActionListener { final int

Läs mer

LiTHehack? Här? lithehack se koma Tisdagar och torsdagar

LiTHehack? Här? lithehack se koma Tisdagar och torsdagar 0 Java och Swing LiTHehack? Här? @ kontakt /. lithehack se. lithehack se koma -, 17 19 Tisdagar och torsdagar Idag grafik menyer kortkomandon pop up-menyer submenyer Skansholm Java direkt upplaga 6 eller

Läs mer

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: Onsdagen 15 december 2004, 8:30 till 13:30 Plats: M Ansvarig lärare: Katarina Blom, tel 772 10 60. Läraren besöker tentamen kl

Läs mer

GUI Nyckelbeståndsdelar

GUI Nyckelbeståndsdelar GUI Nyckelbeståndsdelar Nyckelbeståndsdelar i ett grafiskt användargränssnitt i Java: GUI komponenter Layout hanterare (-manager) Händelsehantering (event processing) GUI komponenter är de element på skärmen

Läs mer

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34

Tentamen. Datalogi I, grundkurs med Java 10p, 2D4112, Lördagen den 30 november 2002 kl , salar E33, E34 Tentamen Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Lördagen den 30 november 2002 kl 9.00 14.00, salar E33, E34 Inga hjälpmedel 30 poäng ger säkert godkänt, 40 poäng ger betyg 4 50 poäng ger

Läs mer

Grafiskt användargränssnitt (GUI-Graphical User Interface) intro Komponenter

Grafiskt användargränssnitt (GUI-Graphical User Interface) intro Komponenter Grafiskt användargränssnitt (GUI-Graphical User Interface) intro Komponenter De komponenter som vi ska titta lite närmare på den här gången är paneler (JPanel), knappar (JButton), textfält (JTextField).

Läs mer

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning 2I1049 Föreläsning 5 Objektorienterad programmering i Java KTH-MI Peter Mozelius Objektorientering Världar uppbyggda av objekt Inte helt olikt vår egen värld Ett sätt att modularisera våra system Objekten

Läs mer

OOP Objekt-orienterad programmering

OOP Objekt-orienterad programmering OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public

Läs mer

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. 1 (8) DUGGA: Objektorienterade applikationer Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad. Skriv ditt namn, personnummer och e-postadress på försättsbladet. Skriv rent dina svar.

Läs mer

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers Föreläsning 10 Mer om grafiska komponenter Händelsestyrda program Layout Managers Utplaceringen av komponenter i en behållare styrs med en layout manager. Det finns olika layout managers: FlowLayout GridLayout

Läs mer

Parallellism, återblick

Parallellism, återblick Parallellism, återblick Josef Svenningsson December 11, 2012 Lab7 Det är problem med lab7. Gå med i den grupp som ni använt tidigare. DEMO Flera saker händer samtidigt Ofta hanterar program olika indata

Läs mer

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013 DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013 Innehåll Trådar i Java swing- klassen Timer Klient-Server-program Trådar Tråd = enkel process Ett program kan ha flera trådar, flera

Läs mer

Föreläsning 13: Swing (GUI), händelser, timer

Föreläsning 13: Swing (GUI), händelser, timer TDA 545: Objektorienterad programmering Föreläsning 13: Swing (GUI), händelser, timer GUI = graphical user interface Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag Idag: grafiska gränssnitt; läs kap

Läs mer

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers. Exempel: FlowLayout. Klassen FlowLayout

Föreläsning 10. Mer om grafiska komponenter Händelsestyrda program. Layout Managers. Exempel: FlowLayout. Klassen FlowLayout Layout Managers Föreläsning 10 Mer om grafiska komponenter Händelsestyrda program Föreläsn Utplaceringen av komponenter i en behållare styrs med en layout manager. Det finns olika layout managers: FlowLayout

Läs mer

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3 Laboration 3 Visualisering (och implementering) av sortering Exempel på grafik (med Swing-paketet) Frågor 1 Laboration 3 Visualisering

Läs mer

Laboration 3 GUI-programmering

Laboration 3 GUI-programmering Laboration 3 GUI-programmering Syfte Erbjuder studenterna en möjlighet att lära sig grunderna i gränssnittsprogrammering i Java. Genomförande Genomförs individuellt eller i grupp om 2 personer. Uppskattad

Läs mer

MVC-mönstret. model-view-control i Swing

MVC-mönstret. model-view-control i Swing MVC-mönstret model-view-control i Swing MVC Tanken bakom MVC (model view control) är att separera uppgifter i ett program från varandra. Model - Den data som behandlas View - Hur användargränssnittet ser

Läs mer

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel

Lösningar till Fiktiv Tentamen på kursen. 2D4135 Objektorienterad programmering, design och analys med Java vt2004. Teoridel Lösningar till Fiktiv Tentamen på kursen 2D4135 Objektorienterad programmering, design och analys med Java vt2004 Teoridel T1) (4p) Förklara kort följande grundläggande begrepp inom objektorienterad programmering:

Läs mer

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den.

Arv och polymorfi. Lite terminologi; Basklass eller superklass: En klass som fungerar som bas för vårt arv. Vi skapar nya klasser utifrån den. Arv och polymorfi Arv och polymorfi är två centrala begrepp i objektorientering. Arvsmekanismen innebär att vi kan skapa nya klasser utifrån redan existerande klasser. Man gör detta med hjälp av nyckelordet

Läs mer

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545 Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Magnus Myréen Modelsvar för Tentamen för Objektorienterad programvaruutveckling,

Läs mer

Grafiska användargränssnitt i Java

Grafiska användargränssnitt i Java TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Grafiska användargränssnitt i Java En genomgång av de viktigaste begreppen Alternativ 2 Från början fanns AWT, Abstract Window Toolkit Stora delar har

Läs mer

Klassen javax.swing.timer

Klassen javax.swing.timer Klassen javax.swing.timer I Swing finns en klass Timer som man kan använda för att upprepa en vis kodsekvens med jämna tidsmellanrum. Ett objekt av klassen Timer exekveras som en egen tråd. Ett objekt

Läs mer

PROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

PROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 DSV SU/KTH sid 1 (6) PROG2 VT13 PROG2 Tenta 2013-06-07 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 Tentan består av tre uppgifter. Max poäng är 38. För betyget E (godkänd) krävs minst

Läs mer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer

Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Java: Utvecklingsverktyg, datatyper, kontrollstrukturer Sven-Olof Nyström Uppsala Universitet 13 juni 2005 1 Utvecklingsverktyg för Java Vi rekommenderar Suns utvecklingsverktyg (SDK, tidigare JDK), se

Läs mer

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag Föreläsning 12 Föreläsning 12 Rörliga figurer Klassen Timer Undantag Något om applets Rörliga appletsfigurer Klassen Timer Undantag Något om applets Klassen javax.swing.timer I Swing finns en klass Timer

Läs mer

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2

l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll Kapitel 2 Strukturerad programmering l uppgiftsformulering l algoritmkonstruktion l verifikation l kodning l testning och avlusning l validering l dokumentering l underhœll 1 2 Olika ansatser Begrepp Den manipulativa/imperativa

Läs mer

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Föreläsning 8 - del 2: Objektorienterad programmering - avancerat Johan Falkenjack johan.falkenjack@liu.se Linköpings universitet Sweden December 4, 2013 1 Innehåll Arv och andra viktiga begrepp Abstrakta

Läs mer

Lösningsförslag till tentamen

Lösningsförslag till tentamen till tentamen 1 (5) Kurs Objektorienterad programmering Kursbeteckning DAT042 Program D2, TKDAT Läsår 2012/2013, lp 1 Examinator Uno Holmer Uppgift 1 (10 p) Ingen lösning ges. Se kurslitteraturen. Uppgift

Läs mer

1 Grafiska komponenter

1 Grafiska komponenter 1 Grafiska komponenter Vi har sett exempel på hur vi kan arbeta med enkla dialogrutor med klasser JOptionPane och hur vi kan rita med en rityta, Graphics instans, i en Java applet. Att skapa ett grafiskt

Läs mer

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545

Modelsvar för Tentamen för Objektorienterad programvaruutveckling, TDA545 Data och Informationsteknik / Computer Science and Engineering Chalmers University of Technology and University of Gothenburg Magnus Myréen Modelsvar för Tentamen för Objektorienterad programvaruutveckling,

Läs mer

Arvshierarki. Object. Bostadshus. Flerfamiljshus. Villa

Arvshierarki. Object. Bostadshus. Flerfamiljshus. Villa Arv Arv är en grundläggande objektorienterad teknik för att organisera och återanvända klasser. Med arv kan man definiera en klass utgående från en redan existerande klass. Den nya klassen återanvänder

Läs mer

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin TENTAMEN I IKB007 INTERNETPROGRAMMERING MED JAVA, 5p för SY2 2001-03-16, kl 14.00-18.00 Hjälpmedel: Inga hjälpmedel är tillåtna

Läs mer

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? Exempel på några av komponenterna. LayoutManagers.

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? Exempel på några av komponenterna. LayoutManagers. Swing Många klasser MER Java Foundation Classes (JFC) Swing Vettigt att lära sig dem utantill Tror inte det... men det kan vara bra att ha en liten överblick över vad som finns Idag (och med fortsättning

Läs mer

ITK:P1 Föreläsning 8. Verktyget Javadoc. Kommentarer för Javadoc. Multimedia för spelkonstruktion

ITK:P1 Föreläsning 8. Verktyget Javadoc. Kommentarer för Javadoc. Multimedia för spelkonstruktion ITK:P1 Föreläsning 8 Multimedia för spelkonstruktion 1 DSV Peter Mozelius Verktyget Javadoc De flesta program behöver dokumentation I Java finns ett verktyg som genererar HTML- dokumentation på ett enkelt

Läs mer

Objektorienterad Programkonstruktion. Föreläsning dec 2015

Objektorienterad Programkonstruktion. Föreläsning dec 2015 Objektorienterad Programkonstruktion Föreläsning 12 14 dec 2015 Parallella Problem I program med flera parallella exekveringstrådar kan det uppstå problem, fel och andra fenomen som inte förekommer i enkeltrådade

Läs mer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 00 - juni - 17 Tentamen i Objektorientering och Java Skrivtid 5 h

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 00 - juni - 17 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 00 - juni - 17 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 4 (12p+8p+12p+8p = 40p) Lärare, jourhavande lärare :

Läs mer

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition.

The Last Adventure. Innehåll. Objektorientering. Språket Java. Java - Paket. Java - synlighet. Den sista lektionen. Repetition. Innehåll The Last Adventure Den sista lektionen Repetition Examination Slutar 14:45 (minnesstund) Många saker "flashar" förbi - hojta Objektorientering Språket Java Class Object Inheritance Polymorphism

Läs mer

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU lösningsförslag till tentamen 2017-06-09 Tid: 8:30-12:30. Plats: SB. Ansvarig lärare: Fredrik Lindblad,

Läs mer

DAT043 - föreläsning 8

DAT043 - föreläsning 8 DAT043 - föreläsning 8 Paket, generics, Java collections framework 2017-02-07 Paket och tillgänglighet Ovanför klasser finns en hierarkisk namespace med paket. Filer som inte deklareras i något paket finns

Läs mer

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag 2001 - aug - 23 Tentamen i Objektorientering och Java Skrivtid 5 h Antalet uppgifter : 3 (15p + 20p + 5p = 40 p) Lärare, jourhavande lärare

Läs mer

FactoryCast HMI. Premium & Quantum PLC. Applets 2004-10-28

FactoryCast HMI. Premium & Quantum PLC. Applets 2004-10-28 FactoryCast HMI Premium & Quantum PLC Applets 2004-10-28 INNEHÅLLSFÖRTECKNING 1 OM DETTA DOKUMENT...3 2 FÖRUTSÄTTNINGAR...3 3 PROJEKT I J++...4 3.1 LÄSA PLC-VARIABLER...4 3.1.1 Gränssnittet...4 3.1.2 Upprätta

Läs mer