Grafiska användargränssnitt, forts
|
|
- Kristina Berglund
- för 7 år sedan
- Visningar:
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) 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
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
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
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)
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
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
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)
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
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
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
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
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:
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.
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
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
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
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
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
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:
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
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
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
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
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 :
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
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
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
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.
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
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.
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
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
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
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
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
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
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
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,
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Ö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
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
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).
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
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)
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
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,
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å
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
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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).
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
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
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.
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
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
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
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
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
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
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
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ö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:
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
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,
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
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
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
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
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 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
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ö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
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
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,
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
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
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
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
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
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 :
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
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,
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
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
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