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.

Slides:



Advertisements
Liknande presentationer
Namn på tillfället (kan skrivas på två rader) Namn på den som presenterar Datum för tillfället.
Advertisements

1 2I1049 Föreläsning 8 KTH-MI Peter Mozelius Grafiska gränssnitt, Java interface och händelsehantering.
Repetition av språket Java
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Stefan Möller OOP F16:1 OOP Objekt-orienterad programmering Föreläsning 16 Grafiska användargränssnitt, GUI Ytor Komponenter Layout-managers Lyssnare.
1 Windows programmering (2) Borland C++ Builder 4/5 Modsoft Ab Kent Westerholm.
II130V Konstruktion av webbsidor Välkommen till föreläsning 3 September 2007.
Objektorienterad utveckling
Klassarv och inkapsling
OOP Objekt-orienterad programmering
Objektorienterad utveckling Lektion 2 Objekt, överlagring, överskuggning, klasshierarkier och dynamisk bindning KTH Peter Mozelius.
TNSL04 – IT grundkurs. VT2008. Föreläsning nr 4, torsdag 28 feb. kl Klasser, objekt, metoder, parametrar, konstruktorer, samlingar och tillstånd.
TNSL04 – IT grundkurs. VT2009. Föreläsning nr 4, måndag 2 mars. kl Snabbrepris av grundbegreppen: Klasser, objekt, konstruktorer, anrop till konstruktorer,
ObjektOrienterad analys och design. SVP Vt2009 Föreläsning nr 2, måndag 8 april kl Diskussion (kurshemsida): Om designuppgiften Om projektuppgiften.
Metoder i java Det finns två typer av metoder i java
Övning5 Så här ska man tänka när man löser uppgift 1 på tentan lite grafik, så här söker man genom en lista så här läser man från en fil i java lösa uppgift.
Programmeringsteknik för K och Media
Programmeringsteknik för K och Media
Swing Grafik delen i Java kallas för Swing. Swing är stort; ca 800 klasser i 16 paket. Swing är en utveckling av AWT (Abstarct Window Toolkit). AWT var.
1 ITK:P1 Föreläsning 4 Grafiska gränssnitt och händelsehantering DSV Peter Mozelius.
Föreläsning 8 Appletprogram/fristående grafiska program Rita linjer, rektanglar mm Skriva text Byta färg Appletprogram html.
1 ITK:P1 Föreläsning 6 Layoutmodeller i Java DSV Marie Olsson.
1 Föreläsning 8 Grafik AWT. 2 Grafik Frame använder man för att skapa ett fönster Button använder man om man vill ha en knapp att trycka på Canvas är.
Föreläsning 13 Polymorfism, Paket och JAR-filer. Polymorfism Ordet härstammar från grekiskan Poly – många Morf – form Polymorf – många former Någonting.
Föreläsning 11 Arrayer.
Programmering i C# 3. Klasser.
1. Klädlådor I byrån finns en strumplåda och en kalsonglåda. Objektmodellera och ge exempel på användning. Strategi: Ställ upp krav i textform Omvandla.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
JavaFX Pär Sikö, Epsilon Agenda Vad är JavaFX JavaFX exempel Swing och JavaFX Språket Egna komponenter Bindning Operationer och funktioner.
MSPEL Föreläsning 2 Text, teckensnitt och grafiska komponenter
Vektorer (klassen Vector) Sortering
Programmeringsteknik för Media1 & K1
PROCESSPROGRAMMERING Föreläsning ‏ Innehåll: Högnivå objekt för trådprogrammering: - Trådgrupper (”Thread pools”)‏ - Exekverare (Executor.
OOP F6:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList toString() – metoden.
1 Föreläsning 7 Repetition Instansvariabler och klassvariabler Klassmetoder och Instansmetoder.
ITK:P1 Lektion 4 Att implementera en spelidé i Java DSV Peter Mozelius.
1 MSPEL Lektion 2 DSV Peter Mozelius Spel i Java applets.
Mitt första Java program Mahmud Al Hakim Copyright, Mahmud Al Hakim, 1.
Föreläsning 8 Arv och abstrakta klasser. Arv Definierar en klass utifrån en redan existerande klass Den nya klassen utökar den ärvda klassen ( extends.
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 8 ( ) INNEHÅLL:Klasser: -Konstruktorer -Klassvariabler -Instansmetoder -Privata.
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
1 ITK:P1 Föreläsning 8 Multimedia för spelkonstruktion DSV Peter Mozelius.
Föreläsning 10 Stränghantering.
Next previous GRIP 2000 Föreläsning 4 Innehåll Inmatningstyper Modeller för interaktiva applikationer Observer MVC Lyssnare Pluggbara komponenter Exempel.
Föreläsning 5 Arrayer & ArrayList Hur man använder API:n
Java paket och jar-filer
Föreläsning 9 Gränssnitt. Super Super kan användas till anrop av en omdefinierad metod Super kan användas till anrop av konstruktorer i superklassen Super.
Föreläsning 4 Klasser Och Objekt.
0. Kod, Klassdiagram och Sekvensdiagram import java.awt.event.*; import javax.swing.*; import java.awt.*; public class TwoThreads implements ActionListener.
1 Objektorienterad programmering i Java Föreläsning 5 Kort om Java-Applets.
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
Class VattenKraft{ public static void main(String[] args){ int num=150; int i, totflöde, maxflöde; int[] fall = new int[num]; //vattenflödet i vattenfallen.
ITK:P2 F8 Strömmar och filhantering DSV Peter Mozelius.
Föreläsning 9 Arv kap 8.1 Interface kap 9.2 Grafiska användargränssnitt (GUI) kap 10.
2I1073 Lektion 1 KTH-MI Peter Mozelius XHTML, stilmallar och Javascript.
Föreläsning 17 Repetition. Källkodsformat Unicode används åäöμψζ tillåtna i namn på identifierare Inte alla miljöer klarar av det Källkod Bytekod Java.
OOP F5:1 Stefan Möller OOP Objekt-orienterad programmering Föreläsning 5 Klasser och objekt Skapa objekt - new Referenser Konstruktorer Inkapsling.
Föreläsning 5 Objekt Klasser Konstruktorer Metoder Minnesbilder av objekt.
Programmeringsteknik för K och Media
OOP&M - teori1 OOP del III–vecka 15 Mer NetBeans MouseEvent Graphics Threads TIJ Chapter 14 Menus sid Drawing File Dialogs
OOP&M - teori1 OOP del III– Föreläsning vecka 9 GUI Containers och LayoutManagers (Inner classes)
Chapter 8: Getting Started with Graphics Programming
OOP&M - teori1 OOP&M del III– Föreläsning 3 vecka 6 Kontrollkomponenter (Components) Som Applets.
OOP&M - teori1 OOP&M del III– Föreläsning 23 vecka 15 Graphics Graphics2D Menyer JMF.
OOP&M - teori1 OOP del III– Vecka 10 Händelser Kontrollkomponenter (Components) Featuring: Applets.
DA7351 Programmering 1 Skapa och placera en komponent i en container Layoutmanagers Applet Händelser och lyssnare Föreläsning 15.
Föreläsning 14: Grafik & mera händelsehantering
Föreläsning 13: Swing (GUI), händelser, timer
Repetitionsföreläsning 2: Quiz & problemlösning med swing
Repetitionsföreläsning 1: Lite rekursion & problemlösning
Presentationens avskrift:

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

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)// Sätter bakgrundsfärgen void setForeground(Color c)// Sätter förgurndsfärg (text) void setFont(Font f)// Sätter font på t.ex text void setToolTipText(String text) // Sätter hjälptext (muspekaren ovanför) void setBounds(int x, int y,// Flyttar och ändrar storlek int width, int height) void setEnabled(boolean b) // Valbar eller inte ("gråa ut") boolean hasFocus()// Ä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?

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

java.awt Component javax.swing JComponent Klasshierarki (AWT och Swing) java.lang Object ContainerJDialogJFrame java.applet Applet JApplet WindowPanel Dialog Frame JButtonJLabelJPanelJTextField

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

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 knapp = new JButton(new ImageIcon("figur.gif")) knapp.setBounds(10, 5, 100, 35); knapp.setRolloverIcon(new ImageIcon("figur2.gif JButton knapp = new JButton("Knapp"); knapp.setBounds(10, 5, 100, 35); knapp.setToolTipText("Tryck på mig!"); 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);

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

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ändringEfter storleksändring

GridLayout GridLayout ser till att alla komponenter har samma storlek Placeras i ett rutnät som definieras när managern konstrueras Före storleksändringEfter 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 Efter storleksändringFöre 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));

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" hej! "); 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);