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



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

Grafiska komponenter.

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

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

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

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

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

OOP Objekt-orienterad programmering

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

OOP Objekt-orienterad programmering

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

Java-concept och Swing. Swing low, sweet chariot

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

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

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

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

Mer om grafiska komponenter. Händelsestyrda program

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

Laboration 15 Grafiskt användargränssnitt

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

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

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

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

1 Grafiska komponenter

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

Rita Egna Bilder, Timer

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) Vad är farorna. Hur lära sig? LayoutManagers. Exempel på några av komponenterna

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

Projekt 2 XL. Observer-mönstret

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Klasser för grafik och bildhantering

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

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

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

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

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 3

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

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

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

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

Lab5 för prgmedcl04 Grafik

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

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

Grafiska användargränssnitt i Java

Frames, menyer och GUI-program

kl

Fönsterhantering, grafik

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

Arv och Grafiska Användargränssnitt

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

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

Lektion Händelsehanterare

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

Grafiska användargränssnitt i Java

Laboration 4: Game of Life

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

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

Lösningsförslag till tentamen

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

Objektorienterad Programkonstruktion

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

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 5. Laboration 4 Lådplanering Exempel på grafik, ett avancerat program Frågor

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

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

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

OOP Objekt-orienterad programmering

Händelsestyrda program

Labbinstruktioner för Java/Swing

Arvshierarki. Object. Bostadshus. Flerfamiljshus. Villa

Fönsterhantering, grafik

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

Lösningsförslag till tentamen

Lösningsförslag till tentamen

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

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

Frivillig Java-swing-Graphics-lab Programmeringsteknik MN1 vt02

LYCKA TILL!!! TENTAMEN I Programmeringsteknik F1. Var vänlig och läs detta: CTH TIN 211. DATAVETENSKAP Göteborg ( ) TENTAMEN

Lösningsförslag till tentamen

Föreläsning 9. Arv Grafiska komponenter

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

GUI Nyckelbeståndsdelar

725G61 - Laboration 8 Ett enkelt GUI. Sahand Sadjadee och Johan Falkenjack

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

GUI-program med Swing

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

Arv. Grafiska komponenter. Arv. Arvhierarki. Arv. Föreläsning 12 (OH-bilder 9)

Laboration 24 Databasen MySQL och java

Applets med komponenter

Grafiska program i Java. AWT och Swing? AWT. Swing. JButton. Button

Föreläsning 9. Arv Grafiska komponenter. Arv. Arv. Implementationsarv

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

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

PROG2 Tenta Gäller SP:PROG2, DSK2:PROG2, FK:PROG2, FK:OOP, DSV1:P2 och ITK:P2

Lösningsförslag till tentamen

Transkript:

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 gemensamma för alla OS Antar plattformens look and feel Awful Window Toolkit!? Fortfarande nödvändig att använda Historik (javax.swing) JDK 1.2 Swing helt skrivet i Java Bygger vidare på AWT Innehåller fler komponenter än AWT Har en look and feel som är oberoende av plattformen Komponenter i Swing börjar på 'J Swing bör användas framför AWT 1

Komponenter (JComponent) Används för att bygga upp ett GUI I stort sett allt som syns på skärmen är komponenter som kan: Presenteras, positioneras Visa grafik, fånga händelser e.t.c Några användbara metoder är: void setbackground(color c) void setforeground(color c) void setfont(font f) void settooltiptext(string text) void setbounds(int x, int y, int width, int height) void setenabled(boolean b) boolean hasfocus() // Sätter bakgrundsfärgen // Sätter förgurndsfärg (text) // Sätter font på t.ex text // Sätter hjälptext (muspekaren ovanför) // Flyttar och ändrar storlek // Valbar eller inte ("gråa ut") // Är komponenten vald? Containers (Container) Container är ett fönster eller en yta i vilken komponenter kan placeras Används för att gruppera GUI-objekt JFrame applikationsfönster JDialog dialogfönster JApplet tilldelas yta av webbläsaren JPanel tom yta att "rita" på JComponent är också en container Containers (forts) Komponenter läggs till en container genom metoden add() void add(component comp) // Lägger till en komponent Fler användbara metoder i klassen: int getheight() // Hur bred? int getwidth() // Hur hög? Component getcomponent(int n) // Det n:te komponenten void removecomponent(component c) // Tar bort komponeten void setlayout(layoutmanager mgr) // Sätter layout Insets getinsets() // För att kolla ytan void paint(graphics g) // Rita i containern void setbackground(color c) // Bakgrundsfärgen void setvisible(boolean b) // Visas eller inte? 2

LayoutManager Positioneringen av komponenterna görs med en LayoutManager Placerar dynamiskt ut komponenter Enklast att använda är FlowLayout placeras ut i den följd de läggs till // sätter Layout till FlowLayout setlayout(new FlowLayout()); Möjlighet till absolut positionering // sätter Layout till ingen alls (null) setlayout(null); Klasshierarki (AWT och Swing) java.lang Object javax.swing JComponent java.awt Component Container Frame JFrame Panel Window Dialog JDialog java.applet Applet JApplet JButton JLabel JPanel JTextField Applikationsfönster (JFrame) Är ett fönster som innehåller: En titelrad Min- och max-knappar Stäng-knapp En ram runt fönstret Eventuellt en meny En applikation med ett GUI måste alltid minst ha ett ramfönster 3

JFrame (skapa) JFrame har bl.a dessa konstruktorer // Skapar en tom JFrame utan titel JFrame myjframe1 = new JFrame(); // Skapar en JFrame med en text på titelraden JFrame myjframe2 = new JFrame("HelloWorld"); Några användbara metoder: Container getcontentpane() // Här placerar vi komponenter void setsize(int width, int height) // Storleken på fönstret void setbounds(int x, int y, int w, int h) // placering void settitle(string titel) // Texten på titelraden void setresizable(boolean resizable) // Fast storlek eller ej void setlayout(layoutmanager mgr) // Fönstrets layout void setvisible(boolean b) // true = fönstret syns void seticonimage(image image) // Fönstrets ikon void setdefaultcloseoperation(int) // Händelse vid stängning JLabel (fast text) Består endast av en fast text som inte kan väljas eller manipuleras Kan inte generera några händelser Används mest som information eller ledtext i en applikation JLabel jlabel = new JLabel("En textsträng."); jlabel.setbounds(10, 5, 100, 20); String text = jlabel.gettext(); jlabel = new JLabel(new ImageIcon("figur.gif"); jlabel.sethorizontaltextposition( SwingConstants.RIGHT); jlabel.settext("text och bild."); jlabel.setforeground(color.black); JButton (knapp) En komponent man kan trycka på Genererar i så fall ett ActionEvent JButton knapp = new JButton("Knapp"); knapp.setbounds(10, 5, 100, 35); knapp.settooltiptext("tryck på mig!"); knapp = new JButton(new ImageIcon("figur.gif")) knapp.setbounds(10, 5, 100, 35); knapp.setrollovericon(new ImageIcon("figur2.gif knapp = new JButton("Avbryt"); knapp.setbounds(10, 5, 100, 35); knapp.settext("ok"); knapp.setmnemonic('o'); // Aktivera med Alt+O knapp.setenabled(false); knapp.addactionlistener(this); 4

JTextField (textfält) En rad där text kan skrivas in Enter genererar ett ActionEvent JTextField txt = new JTextField("Textfält"); txt.setbounds(10, 5, 150, 20); String text = txt.gettext(); // Textfält txt = new JTextField(); txt.setbounds(10, 5, 150, 20); txt.settext("123 abc ÅÄÖ") txt.setfont(new Font("Courier", Font.PLAIN, 16) ); String text2 = txt.getselectedtext(); // abc txt.seteditable(false); txt.selectall(); txt.addactionlistener(this); JTextArea (textruta) Flera rader där text kan skrivas in Måste lägga till scroll-lister JTextArea area = new JTextArea(); JScrollPane scroll = new JScrollPane(txt); scroll.setbounds(10, 5, 175, 60); txt.settext("en text som sträcker sig " + "utanför våran textarea"); txt.setlinewrap(true); // Radbrytning på txt.setwrapstyleword(true); // Bryt efter ordet txt.append("\nappend() lägger till text" + "\nsist i rutan"); txt.replacerange("håller sig innanför", 12, 32); Händelsehantering Program med ett GUI genererar händelser (t.ex. knapptryck) Med händelsehantering avses att hantera dessa när de inträffar Till en komponent registreras olika lyssnare som lyssnar på händelser När händelsen inträffar skickas den till de registrerade händelselyssnare 5

Action-händelser Gränssnittet ActionListener innehåller endast en metod actionperformed(actionevent ae) signalerar att en komponent klickats på Av ActionEvent-objektet kan man få reda på vilken komponent det gäller JButton knapp = new JButton("Tryck på mig!"); if (ae.getsource() == klick) // Knappen klick har genererat händelsen (tryckts på) Registrera En Lyssnare För att registrera en Action-lyssnare till en knapp anropas följande metod JButton knapp = new JButton("Tryck på mig!"); // Registrerar den egna klassen som en lyssnare på ActionEvent knapp.addactionlistener(this); Därefter måste gränssnittet ActionListener implementeras public class MyFrame extends JFrame implements ActionListener { public void actionperformed(actionevent ae) { if (ae.getsource() == knapp) // Knappen knapp har tryckts på } } FlowLayout Placerar komponenterna från vänster till höger i containern Börjar på en ny rad när den är fylld Ändrar placering automatisk Före storleksändring Efter storleksändring 6

GridLayout GridLayout ser till att alla komponenter har samma storlek Placeras i ett rutnät som definieras när managern konstrueras Före storleksändring Efter storleksändring BorderLayout Delar upp ytan i fem areor: north, south, east, west och center När en komponent läggs till måste detta ske i någon av dessa areor Före storleksändring Efter storleksändring JPanel En generell container-klass som används för att innehålla ett antal komponenter Har ingen ram och används därför normalt inuti en annan container Används väldigt ofta vid mer avancerad GUI JPanel westpanel = new JPanel(); // Default FlowLayout westpanel.setlayout(new BorderLayout()); // Får BorderLayout JPanel southpanel = new JPanel(new GridLayout(1, 3)); 7

JPanel (forts) Börja med att skapa en Panel Skapa komponenterna Lägg till komponenterna i panelen Lägg till panelen i fönstret // I konstruktorn JPanel westpanel = new JPanel(new GridLayout(3, 1)); westpanel.add(new JButton("Öka talet")); westpanel.add(new JButton("Nollställ talet")); westpanel.add(new JButton("Avsluta")); getcontantpane.add("west", westpanel); Lite Nytt I Swing Kan använda HTML-kod i texten för vissa komponenter (t.ex JLabel) JLabel label = new JLabel(); label.settext"<html><font size=10>hej!</font></html>"); Lätt att skapa bildknappar ImageIcon knappicon = new ImageIcon("image.gif"); JButton knapp = new JButton("Bildknapp", knappicon); Kan lägga till Border runt komponent Border loweredbevel = BorderFactory.createLoweredBevelBorder(); JPanel southpanel = new JPanel(); southpanel.setborder(loweredbevel); 8