GUI-program med Swing

Storlek: px
Starta visningen från sidan:

Download "GUI-program med Swing"

Transkript

1 Swing * Eclipse * Midlets * Android 4 GUI-program med Swing Javas AWT- och Swing-paket Ett GUI-program En JLabel En JButton Om gränssnitt Händelsehantering Skriv in text Mata in tal Aritmetik Typomvandling cast Omvandla en sträng till flyttal Klassen Math Felhantering (Undantagshantering) Avrundning En JPanel Sectordata 2010

2 Kap 4 : Sid 2 I det här kapitlet lär du dig bygga GUI-applikationer, alltså program med grafiskt gränssnitt. Man skapar då ett objekt ur klassen JFrame och förser det med komponenter, t.ex. textrutor och knappar. Ett JFrame-objekt är en container ( = ett objekt som kan förses med andra komponenter). När man trycker på en knapp ska ju någonting hända: Händelsehantering introduceras i kapitlet. Du lär dig hur man gör inmatningar, beräkningar och utskrifter av resultat. Företeelser som felhantering, typomvandling och avrundning genomgås. Klassen Math, som innehåller matematiska funktioner, introduceras. I kapitlets sista avsnitt får du testa att placera en JPanel i en JFrame. En JPanel är också en container och har dessutom möjlighter att visa grafik. Avsnittet är en introduktion till kapitel 5 där vi kommer att bygga GUI-applikationer just på detta sätt, med en JPanel placerad i en JFrame.

3 Kap 4 : Sid 3 Javas awt- och swing-paket Ett program med grafiskt användargränssnitt (graphic user interface = GUI) innehåller komponenter, exempelvis textrutor där man kan skriva in text, "etiketter" som visar text, knappar som man kan trycka på, kryssrutor där man kan göra olika val, scrollningslister etc. I Java finns ett paket som heter java.awt. Det innehåller klasser som beskriver komponenter, till exempel klasserna TextField, Label, Button, CheckBox, ScrollBar. Vi skapar exempelvis en knapp genom att instansiera ett Button-objekt, en textruta genom att instansiera ett TextField-objekt osv. Paketet java.awt innehåller också klasser och interface som handhar färger (Color), grafik (Graphics), textfonter (Font), klasser för händelsehantering och för layouter med mera. Java har ytterligare ett paket med klasser som beskriver komponenter, nämligen paketet javax.swing. Detta paket innehåller de så kallade swing-klasserna. Här finns klasserna JTextField, JLabel, JButton, JCheckBox, JScrollBar med flera. Klasserna har alltså nästan samma namn i java.awt och i javax.swing. Det som skiljer är att swing-klasserna har ett 'J' i början av namnet. Swing-klasserna är modernare än awt-klasserna och har fler möjligheter. Det finns också swing-klasser som inte har någon motsvarande awt-klass (och awt-klasser som inte har någon motsvarande swing-klass). I Java javisst+ kommer vi att använda swing-klasser när vi ska bygga GUI-program (windowsapplikationer), men vi kommer ofta att behöva importera även java.awt-paketet, för hantering av färger, layouter, händelser med mera. I kapitel 6 lär vi oss att skriva java applets (små javaprogram som exekveras på hemsidor). Vissa webbläsare har standardmässigt inte stöd för swing-klasserna. Vi har i Java javisst+ valt att konstruera applets på "traditionellt" sätt, med awt-klasserna.

4 Kap 4 : Sid 4 Ett GUI-program I slutet på förra kapitlet såg vi hur man skapar en GUI-applikation: Vi skriver en klass som ärver från klassen JFrame och instansierar sedan ett objekt ur den klassen. Detta objekt blir vår GUI-applikation (vårt "fönster"). Övning: En enkel GUI-applikation I Eclipse, skapa ett nytt projekt och ge det namnet Kap04. Skapa sedan en ny klass, KnappFrame, i detta projekt. Skriv koden: import javax.swing.*; public class KnappFrame extends JFrame { public KnappFrame () { Vi låter konstruktorn vara tom så länge. Vi ska snart ge den innehåll. En exekverbar javaklass, alltså ett javaprogram, har som bekant alltid en metod vid namn main(). Skapa ännu en klass, Start, i projektet Kap04 och skriv in denna kod: public class Start { public static void main(string[] args) { KnappFrame f = new KnappFrame (); f.setsize(220, 200); f.setlocation(100,100); f.settitle("min första GUI-applikation"); f.setdefaultcloseoperation(knappframe.exit_on_close); f.setvisible(true); I main()-metoden deklareras och instansieras ett KnappFrame-objekt f. Här sätts också grundläggande egenskaper: Storlek, placering, text på titelraden. Vidare tillses att applikationen stängs då man klickar på krysset i övre högerhörnet. Slutligen görs KnappFrame-objektet synligt. Programmet skapar alltså ett objekt ur klassen KnappFrame, ger det vissa grundläggande egenskaper och visar det på skärmen. Provkör! Ett tomt fönster visas. I Eclipse lägg märke till följande: Så snart du i ovanstående kod skrivit ett f (alltså referensen till objektet) samt efterföljande punkt, så visas ett fönster med alla objektets metoder. Om du i detta läge skriver ett s så visas alla metoder vars namn som börjar på bokstaven s. Om du till exempel skriver bokstäverna setv så visas de metoder vars namn börjar på denna bokstavskombination. Nu behöver du inte skriva metodnamnet, utan det räcket att du klickar på den aktuella metoden, eller markerar den med PILUPP /PILNED och sedan trycker ENTER. Då läggs metodnamnet automatiskt in i koden. Som du ser får du också hjälp att välja argument, det vill säga det som ska stå inom parentes efter metodnamnet. Semikolonet som avslutar satsen får du skriva själv!

5 Kap 4 : Sid 5 Det är faktiskt onödigt att ha ett speciellt program (en speciell klass) för main()-metoden! Vi kan lika gärna placera main-metoden direkt i klassen KnappFrame, så här: import javax.swing.*; public class KnappFrame extends JFrame { public KnappFrame () { Kopiera in main()-metoden i klassen KnappFrame! public static void main(string[] args) { KnappFrame f = new KnappFrame (); f.setsize(220, 200); f.setlocation(100,100); f.settitle("min första GUI-applikation"); f.setdefaultcloseoperation(knappframe.exit_on_close); f.setvisible(true); Skriv in main()-metoden i klassen KnappFrame.java och provkör! När vi startar KnappFrame så eftersöks ju en main()-metod. Om en sådan finns (och det gör det ju nu) så exekverar den, och ett objekt ur klassen KnappFrame skapas - och visas! I fortsättningen låter vi main()-metoden vara en metod i den klass ur vilken vi ska skapa objekt, och vi låter den innehålla metoder som sätter objektets grundläggande egenskaper (storlek, placering med mera). I konstruktorn placeras metoder som har med innehållet att göra. Ofta är det metoder som skapar och visar komponenter av olika slag, till exempel knappar, etiketter, textrutor. Begreppet container När vi exekverar ovanstående program visas vårt fönster, vårt KnappFrame-objekt, som också är ett JFrameobjekt eftersom klassen KnappFrame ärver från JFrame. Fönstret är än så länge tomt, men vi ska strax ge det innehåll. Vi ska förse det med diverse komponenter (etiketter, knappar och textrutor). Ett objekt som har denna egenskap, att man kan lägga komponenter på dess yta kallas för en container (en behållare). Ett JFrame-objekt är alltså en container. Vi kommer senare att arbeta med JPanels och Applets som också är containers. Om ordet this Inför kommande övningar kan det vara bra att känna till följande om ordet this : Ett objekts metoder anropas, som bekant, med punktnotation, så här: När ett objekt använder sina egna metoder skriver man Med ordet this pekar alltså objektet på "sig själv"! Ordet this kan utlämnas. Man kan alltså endast skriva objekt.metod(); this.metod(); metod(); I kommande övningar och exempel använder vi ibland skrivsättet this.metod(); för att öka tydligheten, men ofta utelämnas ordet this för att inte belasta koden allt för mycket.

6 Kap 4 : Sid 6 En JLabel En JFrame (ett "fönster") är en container på vilken man kan placera ut komponenter av olika slag. Ett objekt ur klassen JLabel är ett exempel på en komponent. Ett JLabel objekt används till att visa texter (och, som vi ska se i ett senare kapitel, även bilder). Ibland använder vi ordet etikett när vi talar om en JLabel. (Eng. label etikett) I övningen nedan ska vi lägga ett JLabel-objekt på vår KnappFrame. Klassen JLabel, och andra klasser som beskriver komponenter, finns i paketet javax.swing. Ibland behöver vi även arbeta med klasser ur det äldre paketet med grafiska komponenter, java.awt. I nedanstående övning förekommer klassen FlowLayout och denna klass finns i paketet java.awt. Vi skapar ett objekt med ordet new. Härvid anropas en speciell metod i klassen som kallas konstruktorn. (Konstruktormetoden har samma namn som klassen.) Du har sett att man ofta skriver in argument i konstruktorn. Argumenten överförs till egenskaper hos objektet. När vi skapar en JLabel är argumentet oftast en text, nämligen den text som etiketten ska visa. När man ska lägga ut en etikett i en JFrame måste man: Importera klassen JLabel (det vill säga importera paketet javax.swing ) Deklarera komponenten (t ex JLabel lbl; ). Vi tar som vana att (som i övningen nedan) deklarera komponentobjekten utanför konstruktorn så att objekten känns igen av alla metoder i klassen. Skapa objektet (t ex med lbl = new JLabel ( Detta är en JLabel! );) Dessa instansieringar gör vi i konstruktorn. Lägga ut komponenten på JFrame-ytan.. Detta sker med en JFrame-metod som heter add(), så här: this.add(b); Dessa satser skriver vi i konstruktorn. Vi förser JFrames med en layout manager. Denna bestämmer hur komponenter ska placeras ut i fönstret. I övningen nedan har vi, först i konstruktorn, lagt till satsen this.setlayout(new FlowLayout()); Detta innebär att vårt KnappFrame-objekt får flytande layout ( flow layout). Knappar och andra komponenter kommer då att placeras ut i tur och ordning centrerade, uppifrån och ned. Vi återkommer till layouter senare i kursen. Övning: Lägg in en JLabel Gör tillägg enligt nedan i klassen KnappFrame import javax.swing.*; import java.awt.*; public class KnappFrame extends JFrame { JLabel lbl; public KnappFrame () { this.setlayout( new FlowLayout() ); lbl = new JLabel("Detta är en JLabel!"); this.add(lbl); public static void main(string[] args) { KnappFrame f = new KnappFrame(); f.setsize(220, 200); f.setlocation(100,100); f.settitle("min första GUI-applikation"); f.setdefaultcloseoperation(knappframe.exit_on_close); f.setvisible(true); Provkör!

7 Kap 4 : Sid 7 Övning: Ändra etikettens utseende I klassen KnappFrame, skriv in dessa satser i konstruktorn, lämpligen på raden direkt efter att lbl skapats: Provkör! lbl.setfont(new Font("Arial",Font.ITALIC,20)); lbl.setforeground(color.yellow); lbl.setopaque(true); lbl.setbackground(color.blue); Vår JLabel får en ny font ( = textutseende) med metoden setfont(). Denna ska som argument ha ett objekt av klassen Font. Den vanligaste konstruktorn för ett Font-objekt har tre parametrar: Typsnitt, stil och storlek. Du kan testa typsnitt som "Times new roman", "Courier", "Verdana", "Comic sans MS" med flera. (Längre fram i detta kapitel finns ett program man kan köra för att se vilka typsnitt som finns.) Stil anges med någon av heltalskonstanterna Font.PLAIN, Font.ITALIC, Font.BOLD eller med additionen Font.ITALIC + Font.BOLD (för kursiv + fet stil). Textens storlek anges med heltal. Klassen Font tillhör paketet java.awt. Med metoden setforeground() ger man texten en färg. Metoden har ett argument - ett Color-objekt. Här kan man ange ett fördefinierat Color-objekt (t.ex.color.blue, Color.red, Color.green ) eller ett Color-objekt som man själv skapar. Vi återkommer till färger i nästa kapitel. Med metoden setopaque() väljer man om etiketten ska ha genomskinlig bakgrund eller ej. Satsen lbl.setopaque(true); gör att etiketten lbl kommer att ha en synlig bakgrund. Med metoden setbackground()väljer man bakgrundsfärg. Referenslösa objekt Vi skapar oftast objekt med referens, till exempel lbl = new JLabel("Detta är en JLabel!"); Då blir ju lbl referens till objektet (objektets "namn"). Vi kan referera till objektet i satser som lbl.setopaque(true); lbl.setbackground(color.blue); etcetera. Ibland instansierar man objekt utan att ge det en referens. Exempel: I denna sats, hämtad från övningen ovan, använder vi ett Font-objekt utan referens som argument i setfont()-metoden: lbl.setfont(new Font("Arial",Font.ITALIC,20)); Vi hade kunnat skriva koden så här: Font minfont = new Font("Arial",Font.ITALIC,20); lbl.setfont(minfont); Här har vi först skapat Font-objektet med referensen minfont, och därefter använt denna referens som argument i i setfont()-metoden. Detta är givetvis fullt korrekt, men onödigt omständligt, eftersom vi inte kommer att använda referensen minfont på fler ställen i programkoden. Ett annat exempel i övningen ovan är satsen this.setlayout(new FlowLayout()); där vi använder ett referenslöst FlowLayout -objekt som argument i metoden setlayout().

8 Kap 4 : Sid 8 En JButton Övning: Lägg in en knapp Vi ska nu lägga till en knapp, ett JButton-objekt. Vi ger objektet referensen b och instansierar det med argumentet "Tryck på mej!". Denna text kommer att visas på knappen. Gör tillägg enligt nedan i klassen KnappFrame import javax.swing.*; import java.awt.*; public class KnappFrame extends JFrame { JLabel lbl; JButton b; public KnappFrame () { this.setlayout(new FlowLayout()); lbl = new JLabel("Detta är en JLabel!"); lbl.setfont(new Font("Arial",Font.ITALIC,20)); lbl.setforeground(color.yellow); lbl.setopaque(true); lbl.setbackground(color.blue); b = new JButton("Tryck på mig"); this.add(b); this.add(lbl); public static void main(string[] args) { // oförändrad kod i main()-metoden Provkör! Knappen visas - men om du trycker på knappen så händer inget. Dra i kanterna : Ändra fönstrets storlek! Komponenterna placeras i ordning efter hur de "adderats", centrerade på en rad högst upp. Om de inte får plats flyttas de ned, fortfarande centrerade. Detta är FlowLayout!

9 Kap 4 : Sid 9 Om gränssnitt (interface) Vi ska strax gå igenom hur man får något att hända då knappen trycks (händelsehantering). Vi kommer då att behöva använda gränssnitt (som vi tog upp i Kapitel3, sista sidan). Repetition: Det är inte är tillåtet med multipelt arv i Java, det vill säga, man får inte ärva från flera klasser. Däremot kan man implementera (lägga till) ett (eller flera) gränssnitt (eng. interface) Ett gränssnitt är en speciell slags klass som bara innehåller tomma metoder avsedda att omdefinieras. Klass A Fält Metoder: metod1(){ metod2(){ metod3(){ Interface B Metoder: metoda(){ metodb(){ Klass C Fält Metoder: metod1(){ metod2(){ metod3(){ metoda(){ metodb(){ Med ordet implements implementeras gränssnittets metoder i vår nya klass. I java-kod ser det ut så här: public class C extends A implements B { Händelsehantering Naturligtvis vill vi att något ska hända när vi trycker på knappen! När någon trycker på en knapp skapas ett händelseobjekt (ett objekt ur en klass vid namn ActionEvent) Objektet är argument i en metod som heter actionperformed() och i den metoden beskriver vi vad som ska hända. En metod som beskriver vad som ska hända kallas allmänt för händelsehanterare. Metoden actionperformed() finns tyvärr inte deklarerad i klassen JFrame. Vi implementerar därför ett gränssnitt, ActionListener, där metoden actionperformed() finns. Ett JButton-objekt har en metod som heter addactionlistener() Den metoden måste anropas för att associera knappen till actionperformed()-metoden. Den gör så att knappen lyssnar på en knapptryckning och anropar actionperformed()-metoden då knappen trycks. Klasser och gränssnitt som har med händelsehantering att göra finns i ett paket som heter java.awt.event

10 Kap 4 : Sid 10 Fyra saker måste göras för att något ska hända då vi trycker på knappen: Importera paketet med de klasser och gränssnitt som behövs för händelsehantering: import java.awt.event.* ; Implementera gränssnittet ActionListener (så att vi kan använda metoden actionperformed() ) Sätt en lyssnare på knappen: Med satsen b.addactionlistener(this); anger vi att knappen b ska lyssna på en knapptryckning och anropa metoden actionperformed(). Argumentet this anger att actionperfomed() är definierad i denna (this) JFrame. (Ibland kan nämligen händelsehanteraren vara definierad i en annan klass) Omdefiniera metoden actionperformed(). Där beskrivs vad som ska ske när knappen trycks. Metoden actionperformed()startar när den tar emot ett ActionEvent-objekt, det vill säga när det har inträffat en händelse (någon har tryckt på knappen ) Övning: Byt färg på etiketten! Komplettera klassen MinJFrame med händelsehantering. När någon trycker på knappen så ska etiketten få röd bakgrundsfärg. import javax.swing.*; import java.awt.*; import java.awt.event.*; Nytt paket för händelsehantering! Implementera gränssnittet Actionlistener! public class KnappFrame extends JFrame implements ActionListener { JButton b; JLabel lbl; public KnappFrame () { this.setlayout(new FlowLayout()); lbl = new JLabel("Detta är en JLabel!"); lbl.setfont(new Font("Arial",Font.ITALIC,20)); lbl.setforeground(color.yellow); lbl.setopaque(true); lbl.setbackground(color.blue); b = new JButton("Tryck på mig"); this.add(b); b.addactionlistener(this); this.add(lbl);; Sätt lyssnare på knappen! public void actionperformed(actionevent e){ lbl.setbackground(color.red); Skriv in metoden actionperformed! public static void main(string[] args) { KnappFrame f = new KnappFrame(); f.setsize(220, 200); f.setlocation(100,100); f.settitle("min första GUI-applikation"); f.setdefaultcloseoperation(knappframe.exit_on_close); f.setvisible(true);

11 Kap 4 : Sid 11 Övning: Två knappar Deklarera ytterligare en knapp, b2, i KnappFrame.java : JButton b, b2; Ändra texten på knappen b: Skapa knappobjektet b2 : Lägg ut b2 den efter den första knappen: Sätt lyssnare även på b2 : b = new JButton("Blå"); b2 = new JButton("Röd"); this.add(b); this.add(b2); b2.addactionlistener(this); Gör tillägg i actionperformed-metoden: public void actionperformed(actionevent e){ if( e.getsource() == b) lbl.setbackground(color.blue); if( e.getsource() == b2) lbl.setbackground(color.red); Metoden e.getsource() returnerar referensen till det objekt som har aktiverats, det vill säga händelsens "källa" (source), den knapp som har tryckts. Alltså: Om e.getsource() == b så är händelsens "källa" knappen b, det vill säga någon har tryckt på knapp b. Som synes kommer ett tryck på knapp b att resultera i att etiketten blir blå. Vid ett tryck på knapp b2 blir etiketten röd.

12 Kap 4 : Sid 12 Skriv in text I kapitel 1 lärde vi oss hur man skrev konsolprogram så att en användare kunde mata in text (en sträng) via tangentbordet, och så att strängen överfördes till en strängvariabel. Vi använde metoden nextline(). För att göra motsvarande i en GUI-applikation använder vi en komponent vid namn JTextField. En JTextField komponent är en textruta i vilken man kan skriva in text. I nästa övning ska användaren kunna mata in en sträng (t.ex. ett namn). Vid knapptryck ska texten kopieras till en String-variabel och detta variabelvärde ska skrivas ut i en JLabel Övning: Skriv in en text I Eclipse, skapa en ny klass, Inmata, i projektet Kap04. Skriv koden nedan. (Du kan förstås kopiera mycket av koden från föregående övning ) import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Inmata extends JFrame implements ActionListener{ JTextField tf; JButton b; JLabel lbl1, lbl2; String namn; public Inmata() { this.setlayout(new FlowLayout()); lbl1 = new JLabel("Skriv ditt namn:"); tf = new JTextField(15); b = new JButton("Tryck här"); lbl2 = new JLabel(); add(lbl1); add(tf); add(b); add(lbl2); b.addactionlistener(this); public void actionperformed(actionevent e) { namn = tf.gettext(); lbl2.settext("hej " + namn); public static void main(string[] args) { Inmata f = new Inmata(); f.setsize(400, 150); f.setlocation(100,100); f.settitle("inmata"); f.setdefaultcloseoperation(inmata.exit_on_close); f.setvisible(true); I actionperformed() metoden ovan används metoderna gettext() och settext() : Ett JTextField-objektets metod gettext() returnerar den sträng som står i textrutan. Så med satsen namn = tf.gettext(); så kommer strängen namn att tilldelas textrutans innehåll. Ett JLabel-objekts metod settext(sträng) gör att etiketten visar det som anges som argument. Satsen lbl2.settext("hej " + namn); gör att lbl2 kommer att visa ordet "Hej" samt innehållet i strängen namn. ( Även klassen JTextField har en sådan settext()-metod.) Provkör!

13 Kap 4 : Sid 13 Övning: Textfältet kan lyssna! Lägg in en lyssnare även på textfältet! Skriv in denna sats i konstruktorn: tf.addactionlistener(this); Provkör: Skriv in ett namn i textfältet och tryck på ENTER. Du får samma reaktion som om du tryckt på knappen. Övning: Ändra textens utseende I klassen Inmata, ge labeln lbl2 ny font och ny förgrundsfärg, till exempel : lbl2.setfont(new Font("Arial",Font.ITALIC,40)); lbl2.setforeground(color.blue); Vilka typsnitt finns? I äldre java-versioner fanns ett begränsat antal typsnitt ( Arial, Times New Roman m.fl.) Senare versioner har fler att välja på. Detta lilla konsolprogram visar vilka typsnitt som finns i din utvecklingsmiljö: import java.awt.*; public class Typsnitt{ public static void main(string[] args){ GraphicsEnvironment ge ; ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); String[] font = ge.getavailablefontfamilynames(); for (int i = 0; i < font.length; i++) { System.out.println(font[i]); Testa gärna: Skapa klassen Typsnitt, kopiera in koden och kör! (Programmet innehåller kod som vi för tillfället avstår från att förklara.)

14 Kap 4 : Sid 14 Mata in tal I övningen nedan ska vi mata in tal i två JTextFields, addera talen och skriva ut summan. Övning: Mata in tal I Eclipse, skapa en ny klass, InmataTal, i projektet Kap04. Skriv koden nedan. import javax.swing.*; import java.awt.*; import java.awt.event.*; public class InmataTal extends JFrame implements ActionListener { JTextField tf1, tf2; JButton b; JLabel lbl1, lbl2; int x, y, summa; public InmataTal() { this.setlayout(new FlowLayout()); lbl1 = new JLabel("Skriv ett tal i vardera rutan"); tf1 = new JTextField(5); tf2 = new JTextField(5); b = new JButton("Addera talen!"); lbl2 = new JLabel(); add(lbl1); add(tf1); add(tf2); add(b); add(lbl2); b.addactionlistener(this); tf1.addactionlistener(this); tf2.addactionlistener(this); public void actionperformed(actionevent e) { x = Integer.parseInt(tf1.getText() ); y = Integer.parseInt(tf2.getText() ); summa = x + y; lbl2.settext("summan är " + summa ); public static void main(string[] args) { InmataTal f = new InmataTal(); f.setsize(200, 200); f.setlocation(100,100); f.settitle("mata in tal"); f.setdefaultcloseoperation(exit_on_close); f.setvisible(true); Provkör! Summan beräknas om du trycker på knappen, eller om du trycker på ENTER då markören står i någon av inmatningsrutorna!

15 Kap 4 : Sid 15 Kommentarer till koden: Vi instansierar två inmatningsrutor (JTextField-objekt), tf1 och tf2 Vi har också lagt in en knapp, och några JLabel-objekt för utskrifter. Det finns tre heltalsvariabler. De heter x, y och summa I metoden actionperformed() hittar vi en ny metod, parseint() Du vet sedan förra exemplet att metoden gettext() ger den text (de bokstäver eller siffror) som skrivs in i en textruta. Om vi till exempel matar in en 1:a, en 2.a och en 3:a får vi textsträngen "123" Ibland (som här) vill vi tolka en textsträng (t ex "123") som ett tal istället (här talet 123 ) (Det går ju exempelvis inte att räkna med textsträngar - vare sig de består av bokstäver eller siffror!) Om en sträng enbart består av siffertecken (eventuellt även minustecken) så kan den "översättas" till ett heltal. Denna omvandling från sträng till tal sker med metoden Integer.parseInt(sträng). (Om strängen består av andra tecken genereras ett fel. Vi ska snart se hur man tar hand om ett sådant fel ) En textsträng! Integer.parseInt( "123" ) Resultatet blir ett tal: 123 Integer är en klass och parseint() är en metod i denna klass. parseint() är en klassmetod (eller statisk metod). En klassmetod är (som du förhoppningsvis minns) en metod som kan användas "direkt" - utan att man behöver skapa ett objekt. Vid anropet skriver man helt enkelt klassens namn, en punkt samt metodnamnet. Alltså: x = Integer.parseInt(tf1.getText() ); Klassen Integer finns i paketet java.lang, som ju importeras automatiskt. När x och y är inlästa beräknas summan, summa, och skrivs ut i en etikett med satsen lbl2.settext("summan är " + summa ); Om man konkatenerar (sammanfogar) en sträng med ett tal på detta sätt så blir resultatet en sträng. Om variabeln summa har värdet 375 så kommer strängen Summan är 375 att skrivas ut. Hur gör man om ett tal till en sträng? Nu vet du hur man gör om en sträng till ett tal. Tvärtom då? Hur gör man om ett tal till en sträng? Vi har redan sett att vi får en sträng om vi konkatenerar en sträng med ett tal. I exemplet ovan: "Summan är " + summa blir en sträng. Man gör om ett tal till en sträng helt enkel genom att sammanfoga talet med en tom sträng! (En tom sträng är två citationstecken utan något däremellan) Exempel: Låt x vara ett (hel- eller flyt-)tal. Motsvarande sträng är x +""

16 Kap 4 : Sid 16 Aritmetik Aritmetiska operatorer Antag att x, y och z är heltalsvariabler (int) och att x = 14 och y = 3 Räkneoperation Operator Java-sats z får värdet Benämning Addition + z = x + y; 17 summa Subtraktion - z = x - y; 11 differens Multiplikation * z = x * y; 42 produkt Division / z = x / y; 4 kvot Modulus (se nedan) % z = x % y; 2 rest Heltalsdivision ger 14 3 = Rest Kvot Modulus ger resten vid en heltalsdivision Antag nu att x, y och z är flyttalsvariabler (double) och att x = 14.0 och y = 3.0 Räkneoperation Tecken Java-sats z får värdet Addition + z = x + y; 17.0 Subtraktion - z = x - y; 11.0 Multiplikation * z = x * y; 42.0 Division / z = x / y; (Modulus används ej) Parenteser användas så som i matematiken. Exempel: z = (x + y) * 5 ; Övning: Mata in tal - fortsättning Komplettera klassen InmataTal så att, utöver x, y och summa, även heltalsvariablerna diff, produkt, kvot och rest deklareras. Gör så att de inmatade talens summa, differens, produkt, kvot och rest beräknas och visas då du trycker på knappen. Övning: Räkna med bråk I projektet Kap04, skapa klassen RaknaMedBrak Skriv ett program där man kan skriva in nämnare och täljare i textinmatningsfält. När man trycker på knappen ska bråket visas på blandad form. Lite hjälp: Metoden settext() ska ha en String som argument. Som vi såg på föregående sida så omvandlas ett tal till en sträng helt enkelt genom att sammanfoga talet med en sträng, som kan vara tom. Exempel: Om vi vill att talet x ska visas i en etikett vid namn label1 så skriver vi: label1.settext( +x);

17 Kap 4 : Sid 17 Typomvandling - cast Exempel 1 Antag att du deklarerat följande: int i = 7; double d = i; Normalt måste variabeln som tar emot ett värde vara av samma datatyp som värdet. Dock kan en flyttalsvariabel ta emot ett heltal. (Ett flyttal rymmer mycket mer information än ett heltal) Flyttalet d ovan kommer att få värdet 7.0 Antag nu att du deklarerat följande: double d = 26.87; int i = d; // Fungerar inte! Heltalet i kan inte ta emot ett flyttal. (Ett flyttal rymmer mycket mer information än ett heltal). Hur ska vi göra? I Java kan man få en tillfällig kopia, med annan datatyp, av en variabel: double d = 26.87; int i = (int) d; (int) d är en heltalskopia av flyttalet d. Eftersom heltal inte kan hantera decimaler sker en avhuggning till heltal. i kommer alltså att få värdet 26 Detta förfarande, att arbeta med en tillfällig kopia med annan datatyp, kallas för att man gör en cast Exempel 2 I kassen InmataTal ovan arbetar vi med två heltal, x och y Vi utför en heltalsdivision och bestämmer kvoten med satsen kvot = x / y; Om x = 13 och y = 3 blir kvoten 4 eftersom 13/3 = 4 1/3 Antag nu att vi vill utföra beräkningen x/y för att få ett decimaltal. Ett sätt är att först lagra heltalsvärdet x i en flyttalsvariabel och sedan utföra divisionen. Det är elegantare att utföra operationen med hjälp av en cast: Heltalsvariabeln är alltså x Om vi skriver (double)x så skapas en tillfällig flyttalskopia av heltalsvariabeln x Satsen dec_kvot = (double)x / y ; (där dec_kvot är en flyttalsvariabel) ger då dec_kvot värdet Måste man inte skriva satsen så här: dec_kvot = (double)x /(double) y ;? Svaret är nej: Så snart ett uttryck innehåller ett tal eller en variabel av flyttalstyp så får hela uttrycket flyttalstyp. Övning: Mata in tal fortsättning 2 I programmet InmataTal: Deklarera flyttals- (double-)variabeln dec_kvot Låt dec_kvot tilldelas enligt ovan, och tillse att värdet på dec_kvot skrivs ut Exempel 3 Varje tecken (bokstäver och andra tecken) har en motsvarande talkod. Kanske har du hört talas om ascii -kod. Java använder en kod som heter unicode, som är lika med ascii-kod för de flesta tecken som vi använder. Antag att vi har en teckenvariabel tkn som tilldelats ett värde (alltså ett tecken). Då kan vi se unicode för tecknet med satsen System.out.println( (int) tkn ); Antag att vi har en heltalsvariabel a som tilldelats ett värde (alltså ett heltal). Då kan vi se vilket tecken som har det inmatade talet som unicode med satsen System.out.println( (char) a ); (Du kan läsa mer om unicode på JavaJavisst + s hemsida under fliken "Appendix" )

18 Kap 4 : Sid 18 Omvandla en sträng till flyttal Omvandling från sträng till heltal sker, som du nu vet, med metoden Integer.parseInt(sträng). Motsvarande omvandling från en sträng till ett flyttal sker med metoden Double.parseDouble(sträng). Strängen ska bestå av siffror, eventuellt ett decimaltecken (en punkt) och eventuellt ett minustecken, annars genereras ett fel. (Vi ska snart se hur man tar hand om ett sådana fel.) Double är en klass och parsedouble() är en metod i denna klass. parsedouble() är en klassmetod. Klassen Double finns i paketet java.lang, som importeras automatiskt. Antag att vi matat in en sträng, till exempel "35.678" i ett textfält, tf1. Antag vidare att x är en double-variabel. Variabeln x tilldelas då värdet (talet) med satsen x = Double.parseDouble( tf1.gettext() ); Klassen Math I Java finns en klass vid namn Math. I denna finns ett antal matematiska funktioner. De är static-deklarerade (dvs. klassfunktioner) så de anropas med notationen klassnamn.metodnamn(). Funktionen för "kvadratroten ur" heter Math.sqrt() Tilldelningen y = x skrivs med javasyntax y = Math.sqrt( x ) ; Klassen Math innehåller också några konstanter (static final - deklarererade variabler). Konstanten π skrivs Math.PI. Två välbekanta formler uttryckat i Java: omkrets = 2 * Math.PI * radie; area = Math.PI * radie * radie; Klassen Math finns i paketet java.lang, som importeras automatiskt I kapitel 8 finns en översikt med metoderna i klassen Math. Övning: Cirkeln I projektet Kap04, skriv programmet Cirkeln Man ska kunna mata in en radie (ett decimaltal) i ett JTextField och trycka på en JButton. Då ska cirkelns area och omkrets beräknas och skrivas ut i JLabels. (Lösningsförslag finns på nästa sida) Övning: Pythagoras' sats I projektet Kap04, skriv programmet Pythagoras. Man ska kunna mata in de båda kateternas längder. Programmet ska beräkna och skriva ut hypotenusans längd. katet2 hypotenusa hypotenusa = katet1*katet1 + katet2*katet2 katet1

19 Kap 4 : Sid 19 Lösningsförslag "Cirkeln" import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Cirkeln extends JFrame implements ActionListener{ JButton butt; JTextField tf; JLabel lbl_ledtext, lbl_area, lbl_omkrets; double radie, area, omkrets ; public Cirkeln() { this.setlayout(new FlowLayout()); butt = new JButton("OK"); lbl_ledtext=new JLabel("Ange radie"); tf = new JTextField(10); lbl_area= new JLabel(); lbl_omkrets= new JLabel(); add(lbl_ledtext); add(tf); add(butt); butt.addactionlistener(this); tf.addactionlistener(this); add(lbl_area); add(lbl_omkrets); public void actionperformed(actionevent e){ radie = Double.parseDouble(tf.getText()); area = radie*radie*math.pi; omkrets = 2 * Math.PI * radie; lbl_area.settext("area: " + area); lbl_omkrets.settext("omkrets: " + omkrets); public static void main(string[] args) { Cirkeln f = new Cirkeln (); f.setsize(200, 200); f.setlocation(100,100); f.settitle("cirkeln"); f.setdefaultcloseoperation(exit_on_close); f.setvisible(true);

20 Kap 4 : Sid 20 Felhantering (Undantagshantering) Övning: try - catch Kör programmet InmataTal igen. Denna gång: Mata av misstag in bokstäver i stället för siffror i inmatningsrutorna och tryck på knappen. I Eclipse's Console-fönster anmäls då ett fel ett exception har inträffat. Integer.parseInt()-metoden klarar förstås inte att översätta bokstäver till ett tal I Java kan man fånga upp sådana här fel ( = onormala händelser = undantag = exceptions ) Det sker med hjälp av en så kallad try - catch - konstruktion. Ändra i koden. Bädda in tilldelnings- och beräkningssatserna i ett try-block, så här: try{ x = Integer.parseInt( tf1.gettext() ); y = Integer.parseInt( tf2.gettext() ); summa = x + y; lbl2.settext("summan är " + summa ); catch(exception exc){ Provkör dels med siffror i inmatningsrutorna, dels med bokstäver i åtminstone den ena rutan. Om allt fungerar i try-blocket så är det frid och fröjd. Om något går galet i try-blocket så tas felet om hand (inget meddelande i DOS-fönstert), och det som står i catch-blocket utförs. (För närvarande är catch-blocket tomt) Låt oss göra så att ett felmeddelande skrivs ut om vi matar in något som inte är siffror. Lägg in kod i catch-blocket: catch(exception exc) { summa = 0; lbl2.settext("felaktig inmatning" ); Provkör igen! Dels med siffror i inmatningsrutorna, dels med bokstäver i åtminstone den ena rutan. Övning: Felhantering Förse programmen Cirkeln och Pythagoras med felhantering.

21 Kap 4 : Sid 21 Avrundning Avrundning med metoden String.format() Antag att area är ett flyttal och att vi skriver ut variabelvärdet med denna sats: lbl2.settext("arean är " + area ); I utskriften får vi med ett stort antal decimaler. Ofta vill vi begränsa antalet decimaler i utskrift av flyttal. Vi kan då använda en funktion i String-klassen som heter format. Vi ändrar ovanstående sats till lbl2.settext( String.format("Arean är %5.3f", area) ); Funktionen String.format() har som första argument en sträng, nämligen den text som ska skrivas ut, i vårt fall: "Arean är %5.3f". I strängen finns en kod som inleds med ett procenttecken: %5.3f Koden betyder att på denna plats i strängen ska det skrivas ut ett flyttal (f:et står för flyttal) för vilket reserveras (minst) 5 teckenpositioner och talet ska skrivas med 3 decimaler. Vilket tal ska då skrivas ut? Jo, värdet hos den variabel som står som andra argument, alltså i vårt fall area. Ett exempel till: Antag att x är ett flyttal och i är ett heltal och att vi skriver ut variabelvärdena med satsen lbl2.settext( String.format("x = %6.2f och i = %4d", x, i) ); Om x (exempelvis) har värdet och i (exempelvis) har värdet 13 så blir utskriften: x = 45,68 och i = 13 6 pos 4 pos Den första koden, %6.2f, gör att den först uppräknade variabeln, x,som är ett flyttal (f), skrivs ut på (minst) 6 teckenpositioner med 2 decimaler. Nästa kod, %4d, gör att nästa variabel, i, som är ett heltal (anges med d i koden) skrivs ut på (minst) 4 teckenpositioner. Avrundning med metoden format() i klassen DecimalFormat Här är ett alternativt sätt att avrunda: Man skapar objekt ur en klass vid namn DecimalFormat. Exempel: DecimalFormat df2 = new DecimalFormat("0.00"); // ger 2 decimaler DecimalFormat df3 = new DecimalFormat("0.000"); // ger 3 decimaler Om vi nu vill skriva ut ett tal, till exempel area, med två decimaler låter vi area vara argument i df2:s metod format(), så här: lbl2.settext("arean är " + df2.format(area) ); Klassen DecimalFormat finns i paket java.text, alltså: import java.text.*; Övning: Avrunda Förse programmen Cirkeln och Pythagoras med lämplig avrundning Anmärkning: Ovanstående metoder kan förstås även användas i konsolmiljö. Exempel: System.out.println( String.format("Arean är %5.3f", area) ); Exempel: System.out.println(("Arean är " + df2.format(area));

22 Kap 4 : Sid 22 En JPanel Vi ska till sist i detta kapitel stifta bekantskap med ännu en klass, JPanel, och låta ett fönster visa ett JPanelobjekt, en panel. Övning: Testa en JPanel I projektet Kap04, skapa programmet JPanelTest. Skriv in denna kod: import javax.swing.*; import java.awt.*; public class JPanelTest extends JFrame { JPanel p; public JPanelTest() { this.setlayout(new FlowLayout()); p = new JPanel(); p.setbackground(color.red); this.add(p); public static void main(string[] args) { JPanelTest f = new JPanelTest (); f.setsize(220, 200); f.setlocation(100,100); f.settitle("jpaneltest "); f.setdefaultcloseoperation(jpaneltest.exit_on_close); f.setvisible(true); I koden ovan deklarerar vi JPanel-objektet, panelen, med referensen p. I konstruktorn skapas panelen, den ges röd bakgrundsfärg och läggs ut i fönstret med add(p); Spara och provkör! Panelen syns som en liten fyrkant, i mitten, högst upp i fönstret. I konstruktorn, före add()-satsen, lägg till satsen p.setpreferredsize(new Dimension(80,60)); Spara och exekvera igen! Metoden setpreferredsize(), med ett Dimension-objekt som argument, gör att panelen visas med viss storlek. Vår panel får dimensionen 80 x 60 pixlar.

23 Kap 4 : Sid 23 Något om BorderLayout Vi har i våra övningar försett våra JFrame-objekt med en layout manager, nämligen FlowLayout. En layout manager bestämmer hur komponenter ska placeras ut i fönstret. Med FlowLayout kommer, som bekant, knappar och andra komponenter att placeras ut i tur och ordning centrerade, uppifrån och ned. Vi ska nu testa en annan layout manager, nämligen BorderLayout. Övning: Testa BorderLayout I programmet JPanelTest byt till BorderLayout, det vill säga byt satsen mot satsen this.setlayout(new FlowLayout()); this.setlayout(new BorderLayout()); Spara och provkör! Med BorderLayout fyller panelen upp hela fönstret! Pröva att ändra fönsterstorleken. Panelen fyller fortfarande hela fönstret. En JPanel är, precis som en JFrame, en container. Vi kan lägga ut knappar, textrutor etcetera på den. En JPanel är dessutom lämplig att använda för färger och grafik. I nästa kapitel kommer vi att bygga våra GUI-applikationer enligt den idé som åskådliggjorts här: Själva fönstret är en JFrame. Vi fyller det med en JPanel på vilken vi, i sin tur, placerar komponenter och grafik. Anmärkning 1: Metoden setpreferredsize()har ingen inverkan vid BorderLayout. Anmärkning 2: I vårt exempel ovan ser vi bara en effekt av BorderLayout nämligen den att paneler och komponenter flyter ut till kanterna. Denna layout manager har mer än så att erbjuda. BorderLayout används för att dela in en fönsteryta i flera fält, vilka i sin tur kan innehålla paneler och komponenter. Kapitel 12 handlar om layout. Där kommer vi att se närmare på FlowLayout, BorderLayout och fler möjligheter att påverka applikationens layout.

Applets med komponenter

Applets med komponenter 5 Applets med komponenter Knappar Om gränssnitt (interface) Händelser Måla om appletytan Etiketter och textrutor Förvandla strängar till tal Aritmetik Omvandla datatyper med cast Felhantering Kap 5: Sid

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Laboration 2 Objektorienterad programmering i Java I Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6 Syfte: Att kunna använda sig av olika villkors- och kontrollflödeskonstruktioner

Läs mer

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014 Introduktion till Datalogi DD1339 Föreläsning 2 22 sept 2014 Namn Fält1 Fält2 Fält3 Metod1 Metod2 Metod3 Metod4 public class { public class { Åtkomst, public betyder fullt tillgänglig utifrån public

Läs mer

Lite logik. Kap 6: Sid 2

Lite logik. Kap 6: Sid 2 6 Loopar och val Lite logik Val mellan två alternativ Val mellan flera alternativ Sammansatta villkor Boolska variabler Jämför strängar While-loopar Do-loopar For-loopar Kortformer Kap 6: Sid 2 Lite logik

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

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser

Programstruktur och terminologi. Programmet producerar följande utskrift i terminalfönstret: Ett Javaprogram består av en eller flera klasser // En första version av BankKonto-klassen class BankKonto { private String namn; private long nr; private double saldo; private double ränta; // Klassen TestaBankKonto // Klassens uppgift är att skapa

Läs mer

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

Malmö högskola 2007/2008 Teknik och samhälle Laboration 12 Avsikten med denna laboration är att du ska göra några grafiska program. Börja med att skapa paketet laboration 12. Grundläggande uppgift Uppgift 12a Uppgiften går ut på att göra en enkel

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

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

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

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Camilla Kirkegaard camilla.kirkegaard@liu.se Linköpings universitet Sweden October 14, 2013 1 Innehåll n n n n n Repetition Typomvandlingar

Läs mer

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser Föreläsning 5-6 Innehåll Exempel på program med objekt Skapa och använda objekt Skriva egna klasser public class DrawSquare { public static void main(string[] args) { SimpleWindow w = new SimpleWindow(600,

Läs mer

SMD 134 Objektorienterad programmering

SMD 134 Objektorienterad programmering SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning

Läs mer

JAVA Mer om klasser och objektorientering

JAVA Mer om klasser och objektorientering JAVA Mer om klasser och objektorientering Begreppet package - paket Package används när man t ex vill skapa ett eget bibliotek med klasser. Sen är det då meningen att man ska importera detta paket i det

Läs mer

Föreläsning 5-6 Innehåll

Föreläsning 5-6 Innehåll Föreläsning 5-6 Innehåll Skapa och använda objekt Skriva egna klasser Datavetenskap (LTH) Föreläsning 5-6 HT 2017 1 / 32 Exempel på program med objekt public class DrawSquare { public static void main(string[]

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

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

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.

För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print. 1 Inmatning och utskrift Inmatning från tangentbord och utskrift till skärm sker i java med hjälp av objekten System.out och System.in. Dessa båda objekt är exempel på strömmar. En ström är en typ som

Läs mer

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Laboration 1. kompilera-ikonen exekvera-ikonen Programmerade system I1 Syfte Laboration 1. Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i att skriva

Läs mer

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: Att skapa en klass kvadrat Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här: public class Kvadrat { private int sida; Det var väl inte

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

Att skriva till och läsa från terminalfönstret

Att skriva till och läsa från terminalfönstret Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen

Läs mer

Rita Egna Bilder, Timer

Rita Egna Bilder, Timer Rita Egna Bilder, Timer Josef Svenningsson November 27, 2012 Grafik Varje gång ett fönster behöver ritas om, pga av att det flyttas eller varit övertäckt, anropas automatiskt en metod som har namnet paintcomponent.

Läs mer

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C. Idag Javas datatyper, arrayer, referenssemantik Klasser Arv, polymorfi, typregler, typkonvertering Strängar Tänker inte säga nåt om det som är likadant som i C. Objectorienterad programmering Sida 1 Ett

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

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

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

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

Laboration 1 Introduktion till Visual Basic 6.0

Laboration 1 Introduktion till Visual Basic 6.0 Laboration 1 Introduktion till Visual Basic 6.0 Förberedelse Förbered dig genom att läsa föreläsningsanteckningar och de kapitel som gåtts igenom på föreläsningarna. Läs även igenom laborationen i förväg.

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

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

Grafik, bilder och ljud

Grafik, bilder och ljud Swing * Eclipse * Midlets * Android 5 Grafik, bilder och ljud Klassen JPanel JPanel som rityta Färger, texter och figurer Visa en bild Spela ett ljud JPanel som container Metoden repaint() Egna grafiska

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

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering. EDAA20 Programmering och databaser Mål komprimerat se kursplanen för detaljer Läsperiod 1 7.5 hp anna.aelsson@cs.lth.se http://cs.lth.se/edaa20 Mer information finns på kursens webbsida samt på det utdelade

Läs mer

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs

Datalogi I, grundkurs med Java 10p, 2D4112, Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera förs Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Fiktiv tentamen, svar och lösningar och extra kommentarer till vissa uppgifter 1a) Dividera först talet 37 med 2. Använd heltalsdivision. Det ger kvoten

Läs mer

Tentamen , Grundläggande programmering i Java

Tentamen , Grundläggande programmering i Java Institutionen för informationsteknologi och medier Sid:1(3) Grundläggande programmering i Java Martin Kjellqvist Lösningsförslag, lösningsansatser Tentamen 2006-01-20, Grundläggande programmering i Java

Läs mer

Lösningsförslag till tentamen FYTA11 Javaprogrammering

Lösningsförslag till tentamen FYTA11 Javaprogrammering Lunds universitet FYTA11 Institutionen för Teoretisk Fysik HT 08 Lösningsförslag till tentamen FYTA11 Javaprogrammering Fredag 9:e januari 2009, 09:00 13:00 Uppgift 1: Leta buggar Titta på klasserna A,

Läs mer

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java

(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java (Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart

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

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

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik 2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det riktiga provet tar 45 minuter (en lektionstimme) och det

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

Tentamen FYTA11 Javaprogrammering

Tentamen FYTA11 Javaprogrammering Lunds universitet FYTA11 Institutionen för Teoretisk Fysik HT 08 Tentamen FYTA11 Javaprogrammering Fredag 9:e januari 2009, 09:00 13:00 Instruktioner Inga hjälpmedel är tillåtna. Behandla högst en uppgift

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

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner 732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (

Läs mer

Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08

Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...

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

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList. Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar

Läs mer

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 AID-nummer: Datum: 2014-12-18 Kurskod: 725G61 Provkod: LAB1 Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2 Skrivningstid: 2014-12-18 klockan 8.00-10.00. Hjälpmedel: Inga. För varje fråga

Läs mer

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000

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

System.out.println("Jaså du har "+ antaldollar + " stycken.");

System.out.println(Jaså du har + antaldollar +  stycken.); 1 Vad vi vet Vi har tidigare sett exemplet med inmatning från tangentbordet. Exemplet innehåller flera aspekter av klasser och objekt. import java.util.*; class KeyboardReading { public static void main(string

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

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

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

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

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p)

a. Vilka av följande påståenden är riktiga? Observera att felaktigt valda påståenden ger poängavdrag. (4p) TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för Sy 2 2002-03-15, kl 09.00 13.00 Hjälpmedel: Endast bifogat kompendium Max: 66 poäng, för godkänt krävs 50%. Skriv tydliga och kortfattade svar 1. Grunderna

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

Laboration 1. "kompilera"-ikonen "exekvera"-ikonen

Laboration 1. kompilera-ikonen exekvera-ikonen Syfte Laboration 1. Objektorienterad programmering, Z1 Syftet med denna laboration är dels att göra dej bekant med de verktyg som kan vara aktuella i programmeringsarbetet, dels ge en första inblick i

Läs mer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man

Läs mer

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen.

Klasser i Java kan ha metoder och egenskaper. Metoder beskriver funktioner som klassen kan utföra. Egenskaper beskriver innehållet i klassen. TT Kapitel 3. Husdjur & Fisk Javaklasser Translation by Leif Lourié Java program består av klasser som beskriver saker (objekt) som finns på riktigt. Även om det finns många olika sätt att skriva program

Läs mer

JAVAUTVECKLING LEKTION 3

JAVAUTVECKLING LEKTION 3 JAVAUTVECKLING LEKTION 3 2016 Mahmud Al Hakim mahmud.al.hakim@nackademin.se www.alhakim.se AGENDA Numeriska typer Inläsning av numerisk data Numeriska typomvandlingar Standardklassen Math Villkorskonstruktioner

Läs mer

Extramaterial till Matematik Y

Extramaterial till Matematik Y LIBER PROGRAMMERING OCH DIGITAL KOMPETENS Extramaterial till Matematik Y NIVÅ TVÅ Taluppfattning och tals användning ELEV Det finns många olika programmeringsspråk. I den här uppgiften ska du få bekanta

Läs mer

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har

5. En metod som anropar sig själv a) får inte förekomma i Java-program b) kallas destruktiv c) kallas iterativ d) kallas rekursiv 6. Vilka värden har Datalogi I, grundkurs med Java 10p, 2D4112, 2002-2003 Exempel på tentafrågor i Java Först följer frågor av flervalstyp. Frågorna är inte ordnade efter svårighetsgrad. 1. Skillnaden mellan typerna int och

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

4.4 Swing ett interaktivt grafiskt gränssnitt

4.4 Swing ett interaktivt grafiskt gränssnitt 4.4 Swing ett interaktivt grafiskt gränssnitt Våra javaprogram har hittills bara haft utdata, inga indata. Det var utdata som skrevs ut från programmet till bildskärmen antingen med metoden showmessagedialog()

Läs mer

Lösningar för tenta 3 DAT043,

Lösningar för tenta 3 DAT043, Lösningar för tenta 3 DAT043, 2018-08-22. Uppgift 1 class Person{ public String förnamn; public String efternamn; public int ålder; private double längd; private double vikt; public Person(String förnamn,

Läs mer

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt

Läs mer

TDDC77 Objektorienterad Programmering

TDDC77 Objektorienterad Programmering TDDC77 Objektorienterad Programmering Föreläsning 5 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Arrayer Metoder Räckvidd och Livslängd Arrayer Vända om inlästa värdena Vända om

Läs mer

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler

1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler 1 Datorn som miniräknare I detta avsnitt tas upp hur man kan skriva program som utför enkla räkneoperationer och skriver resultat på skärmen. Syftet är i huvudsak att se hur flera satser kan bygga upp

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

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

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

NetBeans 7. Avsikt. Projektfönster

NetBeans 7. Avsikt. Projektfönster NetBeans 7 Avsikt Att bekanta dig med NetBeans programmeringsmiljö, dvs att med hjälp av NetBeans 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till

Läs mer

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2.

Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2. Föreläsning 2 sept 05 (Onsdag v 36). DD Chapter 2. Hur vi jobbar med ett program. 1. Vad vi skriver (med hjälp av redigeringsprogrammet Emacs) på datorn: // Fig. 2.1: Welcome1.java // A first program in

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas.

Eclipse. Avsikt. Nu ska ett fönster liknande figuren till höger synas. Eclipse Avsikt Att bekanta dig med Eclipse programmeringsmiljö, dvs att med hjälp av Eclipse 1. skapa ett nytt projekt 2. skriva in källkod (sparas som.java-fil) 3. kompilera (översätta) koden till byte-kod

Läs mer

Programmering för språkteknologer I, VT2012. Rum

Programmering för språkteknologer I, VT2012. Rum Programmering för språkteknologer I, VT2012 evelina.andersson@lingfil.uu.se Rum 9-2035 http://stp.lingfil.uu.se/~evelina/uv/uv12/pst1/ Idag - Kursplan - Börja programmera - Lokala variabler - aritmetiska

Läs mer

Java, klasser, objekt (Skansholm: Kapitel 2)

Java, klasser, objekt (Skansholm: Kapitel 2) Java, klasser, objekt (Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Objectorienterad programmering Sida 1 Vad är en klass? En klass är ett sätt att beskriva en mängd objekt och deras gemensamma

Läs mer