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

Storlek: px
Starta visningen från sidan:

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

Transkript

1 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. klickar på en knapp.) Design Undervisningsmoment: föreläsning 7, lab 3 och 6 Avsnitt i läroboken: delar av appendix C Exempel på vad du ska kunna Implementera enkla användargränsnitt med hjälp av Swing och AWT. Beskriva och kunna tillämpa principerna för händelsehantering i Swing/AWT. Kunna separera modell och vy (grafiskt användargränssnitt) vid implementering av program med grafiska användargränssnitt. Grafiska användargränssnitt examineras inte i samband med tentamen utan enbart på laboration 3 och 6. De som väljer att lösa sudoku eller implementera en kalkylator som inlämningsuppgift får ytterligare träning på detta. PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55 Klasspaket i Java Använda klasspaketet Swing För att kunna använda Swing måste man känna till AWT (Abstract Window Toolkit) Ett äldre paket Delar av det används fortfarande (händelsehantering och layout). Klasserna som beskriver grafiska komponenter: fönster (JFrame), knappar (JButton) Swing Ett modernare paket Hur man placerar de grafiska komponenterna i ett fönster (layout). Hur man hanterar händelser. T.ex. att användaren trycker på en knapp. PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55

2 Grafiska komponenter Top-level -behållare Styrkomponenter Används för att interagera med användare. Ex: knappar, menyer, textrutor Reagerar på händelser (musklick, menyval,... ). Behållarkomponenter Kan innehålla andra komponenter och används för att organisera komponenter. Ex. fönster, paneler Det finns några top-level -behållare i Swing, t.ex: JFrame - ett fönster med ram och titel JDialog - ett fönster som används för dialog med användare Man måste använda en top-level -behållare för sina komponenter Komponenter som själva är behållare kan sedan innehålla andra komponenter... PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55 Exempel: Fönster med en knapp och en etikett import javax.swing.*; public class CounterView { public CounterView() { JFrame frame = new JFrame("Counter"); JPanel panel = new JPanel(); frame.add(panel); JButton button = new JButton("Yes!"); panel.add(button); JLabel label = new JLabel("Number yes: " + 0); panel.add(label); public static void main(string[] args) { new CounterView(); PFK (Föreläsning 7) VT / 55 Exempel: Fönster med en knapp och en etikett Förklaring av programkoden JFrame frame = new JFrame("Counter"); // Skapa ett nytt fönster med rubriken "Counter" // Exekveringen ska avslutas om användaren stänger fönstret JPanel panel = new JPanel(); // Skapa en panel frame.add(panel); // Låt fönstret frame innehålla panelen JButton button = new JButton("Yes!"); // Skapa en ny knapp panel.add(button); // Låt panelen panel innehålla knappen JLabel label = new JLabel("Number yes: " + 0); // Skapa en ny etikett panel.add(label); // Låt panelen panel innehålla etiketten // Gör fönstret lagom stort // Gör fönstret synligt PFK (Föreläsning 7) VT / 55

3 Layoutmanager En layoutmanager är ett objekt som bestämmer storlek och läge för komponenterna i en behållare. Den räknar också ut nya positioner och storlekar om fönstrets storlek ändras. Varje behållare har en egen layoutmanager kopplad till sig. Olika typer av layoutmanagers har olika strategier för placering av komponenterna. Ex: Borderlayout delar utrymmet i fem delar; norr, söder, öster, väster och mitten. Flowlayout komponenterna placeras i en rad efter varandra. Gridlayout rutnät. Borderlayout är standardlayout för JFrame och Flowlayout är standardlayout för JPanel. PFK (Föreläsning 7) VT / 55 Exempel: Flowlayout Exempel: BorderLayout import javax.swing.*; import java.awt.*; public class FrameWithBorderLayout { public FrameWithBorderLayout() { JFrame frame = new JFrame("A BorderLayout Frame"); frame.add(new JButton("North"), BorderLayout.NORTH); frame.add(new JButton("South"), BorderLayout.SOUTH); frame.add(new JButton("East"), BorderLayout.WEST); frame.add(new JButton("West"), BorderLayout.EAST); frame.add(new JButton("Center"), BorderLayout.CENTER); public static void main(string[] args) { new FrameWithBorderLayout(); PFK (Föreläsning 7) VT / 55 Flowlayout - ändring av layouten när fönstret ändrar storlek public FrameWithFlowLayout() { JFrame frame = new JFrame("A FlowLayout Frame"); frame.setlayout(new FlowLayout()); frame.add(new JButton("one")); frame.add(new JButton("two")); frame.add(new JButton("three")); frame.add(new JButton("four")); frame.add(new JButton("five")); PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55

4 Exempel: Gridlayout Exempel: Fönster två paneler public FrameWithPanels() { JFrame frame = new JFrame("A Frame with Two Panels"); public FrameWithGridLayout() { JFrame frame = new JFrame("A GridLayout Frame"); frame.setlayout(new GridLayout(2, 3)); frame.add(new JButton("one")); frame.add(new JButton("two")); frame.add(new JButton("three")); frame.add(new JButton("four")); frame.add(new JButton("five")); frame.add(new JButton("six")); PFK (Föreläsning 7) VT / 55 Händelsehantering JPanel northpanel = new JPanel(); northpanel.add(new JButton("one")); northpanel.add(new JButton("two")); frame.add(northpanel, BorderLayout.NORTH); JPanel southpanel = new JPanel(); southpanel.add(new JButton("three")); southpanel.add(new JButton("four")); southpanel.add(new JButton("five")); frame.add(southpanel, BorderLayout.SOUTH); PFK (Föreläsning 7) VT / 55 Lyssnarobjekt När användaren klickar på en knapp (eller väljer ett menyalternativ ) händer följande: 1 Ett händelseobjekt skapas. 2 Swingsystemet anropar en metod på de lyssnarobjekt som är knutna till komponenten. Det är i denna metod man skriver vad som ska hända när användaren klickar på knappen. 1 Ett lyssnarobjekt är ett objekt av en klass som implementerar ett lyssnar-interface. 2 Det finns flera sådana interface. T.ex. ActionListener, som används för att ta hand om knapptryckningar. 3 Olika lyssnarobjekt kan knytas till olika komponenter. 4 Alla klasser som har med händelser att göra finns i paketet java.awt.event. PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55

5 Interfacet ActionListener Händelsehantering Sammanfattning public interface ActionListener { void actionperformed(actionevent e); Vid knapptryckning skapas ett händelseobjekt av typen ActionEvent. Metoden actionpeformed anropas på den (de) lyssnare som är knutna till klassen. Parametern e refererar till händelseobjektet. Man knyter lyssnar-objektet till knappen genom att anropa metoden addactionlistener på knappen. För att få någonting att hända när användaren klickat på en knapp måste man: Låta någon klass implementera interfacet ActionListener. I metoden actionperformed skriver man det man vill ska hända när användaren klickar på knappen. Koppla lyssnar-objektet till knappen genom att anropa metoden addactionlistener. Jfr. tidningsprenumeration. Man kan göra liknelsen att lyssnar-objektet prenumererar på händelsen knappen trycks ned. PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55 Exempel på händelsehantering Exempel på händelsehantering Alternativ 1 klassen CounterView som lyssnare import javax.swing.*; import java.awt.event*; public class CounterView implements ActionListener { private int yescount; private JLabel label; public CounterView() { // Se nästa bild yescount++; label.settext("number yes: " + yescount); PFK (Föreläsning 7) VT / 55 public static void main(string[] args) { new CounterView(); PFK (Föreläsning 7) VT / 55

6 Exempel på händelsehantering Klassen CounterView som lyssnare, konstruktor Exempel på händelsehantering Alternativ 2 inre lyssnarklass public CounterView() { yescount = 0; JFrame frame = new JFrame("Counter"); JPanel panel = new JPanel(); frame.add(panel); JButton button = new JButton("Yes"); panel.add(button); button.addactionlistener(this); label = new JLabel("Number yes: " + yescount); panel.add(label); PFK (Föreläsning 7) VT / 55 Anonym klass (överkurs) Ett ytterligare alternativ är att låta lyssnarklassen vara en anonym klass (en klass utan namn): public class CounterView { private int yescount; private JLabel label; public CounterView() { button.addactionlistener(new ActionListener() { yescount++; label.settext("number yes: " + yescount); ); PFK (Föreläsning 7) VT / 55 public class CounterView { private int yescount; private JLabel label; public CounterView() { button.addactionlistener(new YesButtonListener()); private class YesButtonListener implements ActionListener { yescount++; label.settext("number yes: " + yescount); PFK (Föreläsning 7) VT / 55 Händelsehantering - flera komponenter Man kan ha flera komponenter som genererar händelser. T.ex. flera knappar, knappar och textfält, menyer,... Olika saker ska hända beroende på vilken av komponenterna som genererade händelsen. Detta kan man lösa på olika sätt: Låt ett lyssnarobjekt ta hand om alla händelserna. Då måste detta kunna identifiera vilken komponent händelsen är förknippad med (t ex med hjälp av ActionEvent-objektet). Låt varje komponent ha sitt eget lyssnarobjekt. PFK (Föreläsning 7) VT / 55

7 Exempel på händelsehantering flera knappar Lösning 1: en lyssnare för alla komponenter (använd ej) Undvik sådana här instance-of -lösningar: public class CountersView implements ActionListener { private int yescount, nocount; private JLabel yeslabel, nolabel; private JButton yesbutton, nobutton; if (e.getsource() == yesbutton){ yescount++; yeslabel.settext("number yes: " + yescount); if (e.getsource() == nobutton){ nocount++; nolabel.settext("number no: " + nocount); PFK (Föreläsning 7) VT / 55 Lösning 2: bättre alternativ, en lyssnare per komponent Inre klasser PFK (Föreläsning 7) VT / 55 Lösning 2: en lyssnare per komponent Anrop av addactionlistener Deklarera en lyssnar -klass per knapp. Dessa klasser deklareras som inre klasser i CountersView: private class YesButtonListener implements ActionListener { yescount++; yeslabel.settext("number yes: " + yescount); private class NoButtonListener implements ActionListener { nocount++; nolabel.settext("number no: " + nocount); I konstruktorn knyter vi lyssnare till knappar med: yesbutton.addactionlistener(new YesButtonListener()); nobutton.addactionlistener(new NoButtonListener()); PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55

8 Lösning 2: en lyssnare per komponent Kommentarer Lösning 3 - modell-vy I lösningen slipper vi nu undersöka vilken knapp som användaren klickat på. Det blir enklare att lägga till en komponent. Men men det blir många små lyssnarklasser om man har många komponenter. De lösningar vi visat separerar inte det grafiska användargränssnittet (vyn) från modellen. Det är önskvärt att separera dessa vyn kan man ofta vilja ändra medan modellen ligger fast. En tredje lösning, som löser problemen på föregående bild; Vi separerar modell och vy. Vi låter varje komponent lyssna på sig själv genom att skapa subklasser till motsvarande komponent i Swing. Detaljer finns på de följande bilderna. En ännu bättre lösning finns alltså (se följande bilder). PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55 Lösning 3: modellen Klassen Counters med de båda räknarna Lösning 3: vyn Klassen CountersView public class Counters { private int yescount; private int nocount; public Counters() { yescount = 0; nocount = 0; public void incrementyescount() { yescount++; public void incrementnocount() { nocount++; public class CountersView { private Counters counters; private JLabel yeslabel, nolabel; public CountersView(Counters counters) { this.counters = counters; skapa fönster, knappar och etiketter public void updateyeslabel() { yeslabel.settext("number yes: " + counters.getyescount()); public int getyescount() { return yescount; public int getnocount() { return nocount; public void updatenolabel() { nolabel.settext("number no: " + counters.getnocount()); PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55

9 Lösning 3: vyn Klassen CountersView, konstruktor Lösning 3: vyn Klassen CountersView, konstruktor, forts public CountersView(Counters counters) { this.counters = counters; JFrame frame = new JFrame("Counters"); JPanel yespanel = new JPanel(); frame.add(yespanel, BorderLayout.NORTH); YesButton yesbutton = new YesButton(counters, this); yespanel.add(yesbutton); yeslabel = new JLabel(); updateyeslabel(); yespanel.add(yeslabel); JPanel nopanel = new JPanel(); frame.add(nopanel, BorderLayout.SOUTH); NoButton nobutton = new NoButton(counters, this); nopanel.add(nobutton); nolabel = new JLabel(); updatenolabel(); nopanel.add(nolabel); PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55 Lösning 3: knappar som lyssnar på sig själva Klassen YesButton Lösning 3: huvudprogram Klassen Main public class YesButton extends JButton implements ActionListener { private Counters counters; private CountersView view; public YesButton(Counters counters, CountersView view) { super("yes!"); this.counters = counters; this.view = view; addactionlistener(this); counters.incrementyescount(); view.updateyeslabel(); Klassen NoButton ser ut på motsvarande sätt. PFK (Föreläsning 7) VT / 55 Modellen och vyn kopplas ihop i main-metoden: public class Main { public static void main(string[] args) { Counters counters = new Counters(); new CountersView(counters); PFK (Föreläsning 7) VT / 55

10 Ytterligare förbättringar Fler komponenter JMenuBar, JMenu, JMenuItem Knappklasserna, YesButton och NoButton, innehåller nästan likadan kod. Duplicerad kod är någonting man bör undvika. De båda knappklasserna skulle därför kunna slås ihop till en klass. Det behövs då en parameter till knapp-klassens konstruktor som beskriver vilken typ av knapp det är (Yes No, Neutral, ). För detta kan man använda en Enum-typ. Se gärna på ett exempel som finns att hämta på kursens hemsida. Menyer För att välja mellan alternativ som kan grupperas i en eller flera menyer. Händelsehantering analogt med knappar. Kommer att användas på laboration 3 och 6. Anm. Att ändra programmet utan att ändra programmets funktion kallas refaktorisering. Syftet med refaktoriseringen är att programkoden ska bli mer lättläst och lättare att underhålla. JMenu JMenuItem JMenuBar PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55 Fler komponenter JCheckBox, JRadioButton, JComboBox Fler komponenter JTextField, JTextArea JCheckBox För att välja ett eller flera alternativ. JRadioButton För att välja bland alternativ men bara ett alternativ för varje grupp av radioknappar kan vara valt. JComboBox Kombinerar en knapp (eller ett textfält) med en drop-down-lista. För att göra ett val bland en lista av alternativ JTextField Ett editerbart textfält en rad. När användare skriver in radslutstecken genereras ActionEvent. textfield.gettext() returnerar den sträng som skrivits i fältet. JTextArea Flera rader. Kan sättas uneditable och användas för att visa flera rader text. Kan vara editable och användas för att skriva in flera rader text. Radslut genererar ActionEvent. textarea.gettext() returnerar det som skrivits (i form av en sträng). PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55

11 Fler komponenter dialogrutor Exempel import javax.swing.joptionpane; public class SquareRoot { public static void main(string[] args) { String str = JOptionPane.showInputDialog("Enter a number"); double n = Double.valueOf(str); double sqrroot = Math.sqrt(n); JOptionPane.showMessageDialog(null, sqrroot); Fler komponenter dialogrutor Förbättrat exempel med kontroll av indata public class SquareRoot { public static void main(string[] args) { String s = JOptionPane.showInputDialog("Ange ett tal: "); if (s!= null) { double n = 0; try { n = Double.valueOf(s); double sqrroot = Math.sqrt(n); JOptionPane.showMessageDialog(null, sqrroot, "Kvadratrot", JOptionPane.PLAIN_MESSAGE); catch (NumberFormatException e) { JOptionPane.showMessageDialog(null, "Felaktiga tecken i indata.", "Kvadratrot", JOptionPane.ERROR_MESSAGE); PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55 Fler komponenter Listor ListModel och JList För att visa en lista i en vy finns klassen JList. Till en JList kopplas modellen av listan av typ ListModel. ListModel är ett interface. Det finns färdiga implementeringar av interfacet t.ex. DefaultListModel. Alla modifieringar av listan (modellen) görs via operationer på den modell som kopplas till vyn. Dessa modifieringar visas automatiskt i vyn av listan. Det finns operationer för att ta reda på vad som är markerat i vyn. Exempel: DefaultListModel listmodel = new DefaultListModel(); listmodel.addelement("ett"); listmodel.addelement("två"); listmodel.addelement("tre"); list = new JList(listModel); PFK (Föreläsning 7) VT / 55 Omritning av komponenter Komponenter ritas automatiskt om av systemen i vissa situationer. När de för första gången görs synliga. När storleken ändras (genom att användaren ändrar storlek på fönstret). Ibland vill man kunna begära omritning i programmet. När t.ex. applikationsprogrammet vill lägga till eller flytta på en komponent. Omritning begärs genom att man anropar metoden repaint(). PFK (Föreläsning 7) VT / 55

12 Grafik Grafik Man kan enkelt rita figurer som linjer, cirklar, rektanglar... En JPanel kan användas som rityta. Oftast inför man en subklass till JPanel. JPanel är en komponent (ärver från JComponent). I klassen JComponent finns metoden paint(graphics g). Det är denna metod som används av systemet för att rita om komponenten. paint anropar metoderna paintcomponent, paintborder och paintchildren. Genom att överskugga metoden paintcomponent i subklassen kan man bestämma vad som skall ritas. Parametern g till paintcomponent (och paint) är av typen Graphics. Ett Graphics-objekt kan liknas vid en penna. Med hjälp av pennan kan vi rita linjer, cirklar, rektanglar m.m.: g.drawline(20, 50, 20, 150); g.filloval(50, 100, 200, 200); Vi kan också ändra pennans tillstånd: g.setcolor(color.green); PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55 Grafik exempel Klassen Circle En grön cirkel på en panel flyttas när man trycker på en knapp. Grafik exempel Ritfönstret subklass till JPanel public class CirclePanel extends JPanel { Circle c; public CirclePanel(Circle c) { super(); setpreferredsize(new Dimension(400,400)); this.c = c; En cirkel representeras av en klass Circle med följande metoder: public Circle(int x, int y, int radius); public void move(int dx, int dy); // flyttar mittpunkten public int getx(); // mittpunktens x-koordinat public int gety(); // mittpunktens y-koordinat public int getradius(); PFK (Föreläsning 7) VT / 55 public void movebuttonpressed() { c.move(10, 10); repaint(); public void paintcomponent(graphics g) { super.paintcomponent(g); g.setcolor(color.green); g.filloval(c.getx(),c.gety(),c.getradius(),c.getradius()); PFK (Föreläsning 7) VT / 55

13 Grafik exempel Lyssnarklassen public class MoveButton extends JButton implements ActionListener { CirclePanel cp; public MoveButton(CirclePanel cp) { super("move"); this.cp = cp; addactionlistener(this); cp.movebuttonpressed(); PFK (Föreläsning 7) VT / 55 Grafik exempel Klassen GUI public class GUI { public GUI() { JFrame frame = new JFrame("Circle example"); Circle c = new Circle(50,50,100); CirclePanel cp = new CirclePanel(c); frame.add(borderlayout.center, cp); JPanel buttonpanel = new JPanel(); buttonpanel.add(new MoveButton(cp)); frame.add(borderlayout.south,buttonpanel); public static void main(string[] args) { new GUI(); PFK (Föreläsning 7) VT / 55 Grafik exempel Kommentarer Mushändelser Utan anropet av setpreferredsize blir fönstret mycket litet men kan naturligtvis göras större av användaren. Man bör inte anropa metoden paintcomponent direkt i sina program: paint (och därmed paintcomponent) anropas av systemet vid behov. Om applikationsprogrammet behöver göra omritning ska man anropa metoden repaint (som i sin tur anropar paint). När man skuggar paintcomponent bör man inleda med ett anrop super.paintcomponent(g). Annars ritas inte bakgrunden om. Då musen används genereras händelser av typen MouseEvent. Det inträffar då en musknapp trycks, ner, släpps, musen rör sig med en knapp nedtryckt eller rör sig utan att knapp är nertryckt.... Händelsen innehåller information om vad det var som gjordes. För att lyssna på mushändelser på en komponent kan man knyta olika typer av lyssnare till komponenten. En lyssnare av typen MouseListener lyssnar på knapphändelser. En lyssnare av typen MouseMotionListner lyssnar på händelser som orsakas av att man flyttar musen. PFK (Föreläsning 7) VT / 55 PFK (Föreläsning 7) VT / 55

14 Mushändelser Interfacen MouseListener, MouseMotionListener public interface MouseListener { /** Anropas då man klickat på musen. */ void mouseclicked(mouseevent e); Mushändelser Exempel Om man vill att en komponent (t.ex en panel) skall lyssna på musknappshändelser gör man så här: /** Anropas då man trycker ner en musknapp. */ void mousepressed(mouseevent e); /** Anropas då en nedtryckt musknapp släpps. */ void mousereleased(mouseevent e); public class DrawingPanel extends JPanel implements MouseListener { public DrawingPanel() { super(); addmouselistener(this); public interface MouseMotionListener { /** Anropas då man trycker på knapp och rör musen. */ void mousedragged(mouseevent e); /** Anropas man rör musen utan nedtryckt knapp. */ void mousemoved(mouseevent e); PFK (Föreläsning 7) VT / 55 // implementera här alla metoder i interfacet MouseListener // skugga paintcomponent för att rita till följd av // mushändelser PFK (Föreläsning 7) VT / 55 Mushändelser Om man inte använder alla händelser Ofta vill man bara lyssna på vissa typer av händelser. Då implementerar man de metoder i interfacet som motsvarar dessa händelser och låter övriga ha tomma metodkroppar. Man kan istället använda klasserna MouseAdapter och MouseMotionAdapter. Dessa klasser är abstrakta klasser som implementerar interfacen MouseListener och/eller MouseMotionListener genom att implementera metoder som ingenting gör. Man kan då skriva egna lyssnarklasser som ärver från MouseAdapter eller MouseMotionAdapter och bara skugga de metoder man är intresserad av. Exempel finns i läroboken. PFK (Föreläsning 7) VT / 55

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

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

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

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

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

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

Läs mer

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

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

Läs mer

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

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

Läs mer

Föreläsning 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

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

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

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

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

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

Läs mer

Förelä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

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

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

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

Läs mer

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

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

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

Laboration 4: Game of Life

Laboration 4: Game of Life Laboration 4: Game of Life Programmerade system I1 Bakgrund: I denna laboration ska vi ägna oss åt Game of Life, vilket är en mycket enkel modell av en population organismer som kan leva, dö och fortplanta

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

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

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

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

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

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

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

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

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

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

Projekt 2 XL. Observer-mönstret

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

Läs mer

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011) Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Innehåll Föreläsning 8 Två designmönster, MVC och Observer/Observable. Designrekommendation

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

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

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

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material.

Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material. TDA 545: Objektorienterad programmering Repetitionsföreläsning 2: Quiz & problemlösning med swing Inget nytt material. Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag En quiz! tinyurl.com/tda545quiz

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

Arv och Grafiska Användargränssnitt

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

Läs mer

Labbinstruktioner för Java/Swing

Labbinstruktioner för Java/Swing Labbinstruktioner för Java/Swing Grafik- och interaktionsprogrammering 2008 Martin Berglund Allmänt Dessa instruktioner är på intet sett den enda möjliga lösningen på labben, tvärtom finns

Läs mer

Arv, Grafiska användaregränssnitt och Inre klasser! Förelasning 12!! TDA540 Objektorienterad Programmering!

Arv, Grafiska användaregränssnitt och Inre klasser! Förelasning 12!! TDA540 Objektorienterad Programmering! Arv, Grafiska användaregränssnitt och Inre klasser! Förelasning 12!! TDA540 Objektorienterad Programmering! Mer om Arv Har tidigare konstaterat att alla klasser ärver (inherit) klassen Object om inget

Läs mer

Tentamen i Objektorienterad programmering

Tentamen i Objektorienterad programmering CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Fredagen 13 januari 2012, 14.00 18.00. Jourhavande lärare: Björn von Sydow, tel 0722/391401. Inga hjälpmedel. Lösningar

Läs mer

Händelsestyrda program

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

Läs mer

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

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

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

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

För att hitta filen gå till mappen NetBeansProjects. Välj undermappen med rätt projekt, och sedan undermapp dist. Där ligger.jar-filen.

För att hitta filen gå till mappen NetBeansProjects. Välj undermappen med rätt projekt, och sedan undermapp dist. Där ligger.jar-filen. Java utan netbeans Du har gjort ett program i netbeans Hur exportera det så att andra kan köra det utan att använda netbeans? Välj projektet som main project Högerklicka på det och välj Clean and Build

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

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

Föreläsning 14: Grafik & mera händelsehantering

Föreläsning 14: Grafik & mera händelsehantering TDA 545: Objektorienterad programmering Föreläsning 14: Grafik & mera händelsehantering Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag Idag: grafik läs kap 17 Viktigt i denna föreläsning: att rita

Läs mer

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010) Tid: 2:a september 200, klockan 8:30-12:30. Plats: V Ansvarig lärare: Katarina Blom, tel 772 10 0. Läraren besöker tentamen kl 9:30

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

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

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

Läs mer

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

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

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

Läs mer

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 för kursen Objektorienterad programvaruutveckling GU (DIT010)

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

Läs mer

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

Objektorienterad Programmering DAT043. Föreläsning 6 30/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) Objektorienterad Programmering DAT043 Föreläsning 6 30/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material) 1 Repetion: En GUIapplikation med Swing Huvudklass implementerar Runnable - metoden

Läs mer

Föreläsning 7. Grafiska användargränssnitt

Föreläsning 7. Grafiska användargränssnitt Föreläsning 7 Grafiska användargränssnitt För att göra grafiska användargränssnitt: Måste man veta hur man skapar komponenterna i ett GUI och vilka det finns. Till lab 3 räcker det med att känna till de

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

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

Lösningsförslag till tentamen

Lösningsförslag till tentamen Uppgift 1 Lösningsförslag till tentamen 110317 a) Sant. b) Falskt. I ett RAM-minne är åtkomsttiden densamma för alla minnesadresser. c) Falskt. TCP är ett protokoll på transportlagret. d) Falskt. Binärsökning

Läs mer

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

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

Läs mer

Properties. Användbara metoder som kan anropas i propertychanged:

Properties. Användbara metoder som kan anropas i propertychanged: Properties Ett objekt kan ha vissa egenskaper (som beskrivs med instansvariabler). En enkel egenskap X avläses och sätts med metoderna getx() och setx(värde). En indexerad egenskap (från t.ex. en array)

Läs mer

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

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

Läs mer

Seminarium 8 Innehåll

Seminarium 8 Innehåll Seminarium 8 Innehåll 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. klickar på en knapp.) Design EDAA30

Läs mer

Exempel på användning av arv: Geometriska figurer

Exempel på användning av arv: Geometriska figurer (9 maj 2014 Klasshierarkier 1 ) Exempel på användning av arv: Geometriska figurer Uppgift: Skriv ett program som kan hantera några olika geometrisk figurer: linjer, cirklar och rektanglar. (9 maj 2014

Läs mer

Föreläsning 10. ADT:er och datastrukturer

Föreläsning 10. ADT:er och datastrukturer Föreläsning 10 ADT:er och datastrukturer ADT:er och datastrukturer Dessa två begrepp är kopplade till varandra men de står för olika saker. En ADT (abstrakt datatyp) är just abstrakt och är inte kopplad

Läs mer

PROG2 Tenta 2014-05-02 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

PROG2 Tenta 2014-05-02 Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2 DSV SU/KTH sid 1 (6) PROG2 PROG2 Tenta 2014-05-02 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

Tentamen i Objektorienterad programmering

Tentamen i Objektorienterad programmering CHALMERS TEKNISKA HÖGSKOLA Datavetenskap TDA547 Tentamen i Objektorienterad programmering Lördagen 12 mars 2011, 8.30 12.30. Jourhavande lärare: Björn von Sydow, tel 0762/981014. Inga hjälpmedel. Lösningar

Läs mer

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

Swing. MER Java Foundation Classes (JFC) Hur lära sig? Vad är farorna. 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 Hur lära sig? Principerna

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

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

Swing. MER Java Foundation Classes (JFC) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna. Swing Många klasser MER Java Foundation Classes (JFC) Swing Jättemånga klasser Vettigt att lära sig dem utantill Tror inte det Hur lära sig? Principerna Model - view - controller Observer - observed Öva,

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

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

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

Tentamen FYTA11 Javaprogrammering

Tentamen FYTA11 Javaprogrammering Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 10 Tentamen FYTA11 Javaprogrammering Måndag 10:e januari 2011, 09:00 13:00 Instruktioner Hjälpmedel: enkla ritverktyg och Javadoc-genererade

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

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

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

Läs mer

Lösningsförslag tentamen FYTA11 Java

Lösningsförslag tentamen FYTA11 Java Lunds universitet FYTA11 Institutionen för Teoretisk fysik HT 10 Lösningsförslag tentamen FYTA11 Java Måndag 10:e januari 2011, 09:00 13:00 Instruktioner Hjälpmedel: enkla ritverktyg och Javadoc-genererade

Läs mer

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

Grafiska komponenter.

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

Läs mer

070602 kl 10.15-15.15

070602 kl 10.15-15.15 Malmö högskola 1 Tentamen på kursen DA7800, Programmering med Java del II 070602 kl 10.15-15.15 Tillåtna hjälpmedel: En valfri Javabok Vid bedömning av lösningarna tas hänsyn till om dessa uppfyller de

Läs mer

Föreläsning 13 Innehåll

Föreläsning 13 Innehåll Föreläsning 13 Innehåll Arv Repetition Om tentamen Datavetenskap (LTH) Föreläsning 13 HT 2017 1 / 32 Diskutera Här är början på klassen MemoryWindow som använts på en lab. Vad kan menas med extends SimpleWindow?

Läs mer

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 5 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Algoritmanalys, Ordo Sortering, Insertionsort

Läs mer

ID1004 Laboration 3, 5-6 November 2012

ID1004 Laboration 3, 5-6 November 2012 18-okt-2012/FK ID1004 Laboration 3, 5-6 November 2012 Labben bör göras individuellt. Beräknad tid ca 2 timmar. Instruktionen antar att labben utförs i datasal, med hjälp av den integrerade utvecklingsmiljön

Läs mer

Lösningsförslag till tentamen

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

Läs mer

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

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

Läs mer

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

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

Läs mer

Laboration 24 Databasen MySQL och java

Laboration 24 Databasen MySQL och java Laboration 24 Databasen MySQL och java Avsikten med denna laboration är att du ska hämta information ur en eller flera tabeller och visa resultatet i en JTable-komponent. Du ska ändra innehållet i tabellen

Läs mer

Grafiska användargränssnitt i Java

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

Läs mer

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

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

Läs mer

Arvshierarki. Object. Bostadshus. Flerfamiljshus. Villa

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

Läs mer

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

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

Läs mer

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: Objektorienterad analys, Objektorienterad design Grafiskt användargränssnitt,

Läs mer

2I1073 Lektion 2. Lektion 2a. Lektion 2a. Servlets, säkerhet, och filhantering. import java.io.*; import javax.servlet.*; import javax.servlet.http.

2I1073 Lektion 2. Lektion 2a. Lektion 2a. Servlets, säkerhet, och filhantering. import java.io.*; import javax.servlet.*; import javax.servlet.http. 2I1073 Lektion 2 Servlets, säkerhet, och filhantering KTH-MI Peter Mozelius import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class Lektion2a extends HttpServlet { public void

Läs mer

27. GUI Programming. Java. Summer 2008 Instructor: Dr. Masoud Yaghini

27. GUI Programming. Java. Summer 2008 Instructor: Dr. Masoud Yaghini 27. Java Summer 2008 Instructor: Dr. Masoud Yaghini Until now, you have only used dialog boxes and the command window for input and output. You used JOptionPane.showInputDialog to obtain input, and JOptionPane.showMessageDialog

Läs mer

Lösningsförslag till tentamen

Lösningsförslag till tentamen Uppgift 1 a) Falskt! Bitmönstret är 10010111 b) Falskt! Memory Manager handhar Lösningsförslag till tentamen 170609 c) Falskt. En trojansk häst är ett program i förklädnad. Det är således program som på

Läs mer

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

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

Läs mer