Grafiska användargränssnitt i Java

Relevanta dokument
Grafiska användargränssnitt i Java

Grafiska användargränssnitt i Java

Grafiska användargränssnitt i Java

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

Objektorienterad programmering med Java Swing: Händelser, lyssnare och applets

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

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

TDDD78, TDDE30, 729A Grafik: Att "rita" egna komponenter

Lab5 för prgmedcl04 Grafik

1 Grafiska komponenter

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

OOP Objekt-orienterad programmering

A. Datorn från grunden

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

Mer om grafiska komponenter. Händelsestyrda program

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

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

Sophia Prosell DREAM WEAVER SKAPA OCH PUBLICERA EFFEKTIVA WEBBSIDOR

Skärmtangentbordet som är enkelt att använda både med mus, touchskärmar och interaktiva whiteboards

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

Objektorienterad programmering Föreläsning 15. Grafiska användargränssnitt (GUI Graphical User Interface)

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

GeoGebra i matematikundervisningen - Inspirationsdagar för gymnasielärare. Karlstads universitet april. Liten introduktionsguide för nybörjare

Rullningslisten. Klicka på rullningslistpilar (pil upp eller pil ner) 1 för att förflytta dig i önskad riktning, en liten bit i taget.

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

Lektion Händelsehanterare

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

OOP Objekt-orienterad programmering

Starta ett fönster... Hur håller tkinter reda på musklick? Olika sätt att organisera fönsterinnehåll. Och för att placera våra widgets

Gränssnitt för FakeGranska. Lars Mattsson

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

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

Programmering. Scratch - grundövningar

Wizkeys skärmtangentbord

Institutionen för matematik och datavetenskap Karlstads universitet. GeoGebra. ett digitalt verktyg för framtidens matematikundervisning

Bilaga 4, Skapa grafiskt användargränssnitt med guide

Användarmanual WebNailer. 19 januari 2004

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

3.5 Visuell programmering

Grafiska användargränssitt och händelsehantering

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

Arv och Grafiska Användargränssnitt

Händelsestyrda program

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

KURSMÅL WINDOWS STARTA KURSEN

INSTALLATION...3 ATT KOMMA IGÅNG...3 PROGRAMMETS DESIGN...4 LÄGGA TILL TABELL...4 EDITERA TABELL...4 EDITERA RELATION...5 SPARA OCH AVSLUTA...

Översikt Föreläsning 1. Trivicalc. Vad är trivicalc? En cell. Områden på skärmen. SMD168/SMD135 Fredrik Bengtsson

Java-concept och Swing. Swing low, sweet chariot

In- och utenheter. Händelsebaserad programmering i GLUT. Interrupt-baserad interaktion. Sampling / polling. Händelsebaserad interaktion (forts.

ViTal. Talsyntes. Användarhandledning

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

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

4 Kolumn Kalkylbladet är uppdelat i rader (horisontellt) och kolumner (vertikalt). Där dessa möts finns alltid en cell.

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

DOTNETNUKE SKOLNING Skapat: den 20 november 2012

Ett enkelt Kalkylexempel - Fruktaffären

Uppgift 18 Eget programval

Beskrivning av gesällprov RMI Chat Mikael Rydmark

Lathund CallCenter 2010

Internet. En enkel introduktion. Innehåll:

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

Manual TorTalk Mac 1.0

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

Idag: Centrerad utskrift. Granskning. DD1311 Programmeringsteknik med PBL. Granskning Felhantering GUI. Föreläsning 15.

Sida Kapitel 3 Fönster och dörr... 3

Modeller och teknik Grundl program och gränssnitt. Matlab-tips

Laboration 1 Introduktion till Visual Basic 6.0

729G06 Programmering och logik. Grafiska gränssnitt och eventdriven programmering del 2

Inställningar för mus och tangentbord i Windows 7

Labora&on 8 Formulär övningar/uppgi6er

Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic

PROGRAMMERINGSTEKNIK TIN212

I högskolans nätverk hittar du programmet PowerPoint genom Startmenyn, Huvudmeny XP, Kontorsprogram, Microsoft Office, Microsoft PowerPoint.

Handbok Spectacle. Boudhayan Gupta Boudhayan Gupta Översättare: Stefan Asserhäll

WWAAC Layout Editor. 1. Standard för knapp (kolla att fliken Standard för knapp är vald)

Lite mer om CGI-programmering

Personalsupport. Medicinska fakulteten, Lunds universitet. Textredigeraren. Moodle version 2.7.1

Windows Forms Winstrand Development

OptiWay GIS Vind. Manual - Version OptiWay

Introduktionsmanual till Design- / Utvecklarmodulen

Fyra i rad Javaprojekt inom TDDC32

Att använda talsyntes i en lässituation.

Microsoft Office Excel, Grundkurs 1. Introduktion

Open24 Webtool. Inofficiell komplettering till manual

Visa stora ikoner utan text i Command Manager = Större arbetsyta

Anpassning av Windows XP

Grunderna i Excel. Identifiera gränssnittsobjekt som du kan använda för att utföra vanliga uppgifter.

SÖKORDSREGISTER SÖKORD

Instruktion 1. I var och en av dessa celler kan man mata in något av följande:

Tor Sterner-Johansson Thomas Johansson Daniel Henriksson

Android översikt. TDDD80 Mobila och sociala applikationer

Grafisk formgivning. Användarens checklista

GeoGebra i matematikundervisningen - Inspirationsdagar för gymnasielärare. Karlstads universitet april

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

Storleksförändra figurer och bildobjekt - Word 2007 / 2010

v. 42 Python HT17 En introduktion Oscar Bergqvist

Kalkylprogram. I övrigt kan man också söka på Google eller YouTube för att få mer information.

Transkript:

jonas.kvarnstrom@liu.se 2017 Grafiska användargränssnitt i Java En genomgång av de viktigaste begreppen

Alternativ 2 Från början fanns AWT, Abstract Window Toolkit Till stor del ersatt av Swing: Mer omfattande, mer flexibelt Passar bra för våra behov Illustrerar begrepp som är vanliga i GUI-programmering Nytt alternativ: JavaFX Helt annan struktur (scenes, stages, nodes)

Del 1: Att använda Swing: Fönster, knappar, menyer, Layout (placering) Händelsehantering någon tryckte en knapp" Genomgående exempel: "Ordbehandlare" Del 2: Att rita på skärmen, i en egen komponent

Att öppna ett fönster 5 Fönster: Ordbehandlaren behöver komma ihåg sitt fönster Sätt fönsterstorleken, se till att fönstret visas på skärmen

Komponenter och behållare 6 En är: En komponent Något grafiskt som visas på skärmen En behållare (container) Något som kan innehålla andra komponenter Kan läggas till vid behov Hela fönstrets innehåll. utom titelrad / menyrad

Komponenter 8 Istället för att "rita": Säg till vilka komponenter som ska finnas Menyer, knappar, textfält, statusrad Swing sköter om utseende (med mera) Alla komponenter: https://docs.oracle.com/javase/tutorial/uiswing/components/componentlist.html

Knappar i Java 9 Grunden för Swing-komponenter Har två lägen, av/på Radioknappar: Bara en aktiv åt gången i varje Standardknapp Checkbox, av/på

Textkomponenter 10 Editera text med flera stilar: HTML, Abstrakt, gemensam funktionalitet En enda rad text Textarea med flera rader Speciell formattering för datum, valuta, Lösenord syns inte när de skrivs in

Ordbehandlare med komponenter 11 Lägger till flera komponenter till behållaren fönstret Inget syns på skärmen än! NU är det dags att visa fönstret och dess innehåll

Hålla reda på komponenter 12 Behåll pekare till det du vill ha senare (plocka ut texten för att spara den, )

Resultat 13 Resultat: Rätt komponenter Fel layout Liten textarea

Layout 1: Önskemål 15 Hur får vi önskad layout (positioner och storlek)?

Layout 2: Absoluta koordinater? 16 Absoluta koordinater? Fördelar / nackdelar: (+) Enkelt att förstå ( ) Inget stöd för att ändra fönsterstorlek ( ) Hur hanterar man större text? ( ) Översättningar till andra språk, där ord kan ta mer plats? Tools / Инструменти URL / nettadresse

Layout 3: Önskad storlek 17 Preferred Size Komponenter kan tala om sin önskade storlek (preferred size) : Storlek på texten i inställd fontstorlek + lite marginaler Ingen text inskriven preferred size är minimal! Varje behållare har en layouthanterare (layout manager) Frågar subkomponenter hur stora de vill vara Applicerar layoutregler (här: "Allt i en rad") Summerar, beräknar behållarens önskade storlek

Layout 3: Innehållshierarkin 18 Anropa pack() i ett fönster (frame) Så frågar den sin layouthanterare hur mycket plats den behöver använd den storleken! Fönster Menyrad ContentPane Meny: File Meny: Edit Meny: Help Knapp1 Knapp2 Textfält Statusrad Val1 Val2 Val3

Layout 4: Annan storlek än önskad 19 När en komponent får annan storlek än den begärda: Layouthanteraren har regler för hur utrymmet ska användas Extra utrymme på höjden: Ska användas till textarean Extra utrymme på bredden: Menyrad: Extra plats mellan Edit och Help Knapprad: Allt vänsterjusterat Textfält, statusrad: Använder hela utrymmet Just nu:

MigLayout 1: Introduktion 20 MigLayout rekommenderas starkt! Nu: De enklaste funktionerna Se Baserad på rutnät

MigLayout 2: Rutor 21 Komponenter använder en eller flera rutor B I U Left Cent er Right Print Textarea Statusrad

MigLayout 3: Anpassning 22 Kolumnbredder och radbredder anpassas till komponenterna Ange vilka celler som ska använda "överbliven plats" B I U Left Center Right Print Textarea Statusrad

MigLayout 4: Hur får cellerna växa? 23 B I U Left Center Right Print Textarea Statusrad

MigLayout 5: Ordbehandlaren 24 Separation Wrap: Radbyte Span, grow: Storlek

Scrollning 25 Textfältet måste kunna scrollas Inte "inbyggt" i lägg den i en Fönster Knappar JScrollPane Statusrad Textfält

Händelsehantering: Principer 27 Hur vet vi när någon tryckte på en knapp? TDDD73: Vänta på ett klick Måste veta när det kan hända Måste hantera allt själva koordinater,

Händelsehantering: Principer (2) 28 I många grafiska gränssnitt: Säg till systemet vad det ska göra när en knapp trycks Fortsätt själv med något annat När knappen trycks hanteras detta asynkront i en annan tråd Som om du har en assistent Du säger: "Om knappen trycks, gör detta" Assistenten håller koll på inmatning Ser att knappen trycktes in, gör vad du bad om

Lyssnare 0: Callbacks 29 Hur vet assistenten vad som ska göras? Skicka med en uppgift kod att utföra I vissa språk: Skicka med en funktion en callbackfunktion def task(): print( Someone pushed the button ) Vanlig funktion button.settask(task) Skicka (en pekare till) själva funktionen I Java: Skicka med ett objekt som har funktioner (metoder) I Swing: Lyssnare (objekt som lyssnar efter händelser)

Lyssnare 1: Gränssnitt, listor 30 Typsäkerhet: Komponenten definierar gränssnitt Vad måste ett callback-objekt kunna göra? Har en lista på lyssnare av denna typ

Lyssnare 2: Implementation, registrering 31 Vi implementerar konkreta lyssnare Adderar lyssnare till komponenter

Lyssnare 3: När något händer 32 När någon klickar med musen: Java får "rå" input från operativsystemet I en händelsehanteringstråd i bakgrunden ("assistenten") Skapar ett objekt som beskriver händelsen:,

Lyssnare 4: När något händer 33 När någon klickar med musen: Java får "rå" input från operativsystemet I en händelsehanteringstråd i bakgrunden ("assistenten") Skapar ett objekt som beskriver händelsen:, Skickar händelsen till den relevanta komponenten Komponenten informerar (anropar en metod i) varje lyssnare Inkluderar vår registrerade

Lyssnare 5: Nästlad klass 34 Bekvämlighet: Kan lägga en klass inuti en annan, nästlat Färre filer att hålla reda på Lyssnarklassen behöver inte "synas" utåt

ActionListener 1: Introduktion 35 Vanlig och enkel lyssnare: ActionListener Anger vad som ska göras när någon vill "utföra en handling" Menyval Knapptryck Dubbelklick i lista

ActionListener 2: Exempel 36 Skapa knapp Ge den en lyssnare Lägg till den i fönstret Menyer hanteras på samma sätt Håll reda på textkomponenten Om/när vi anropas: Manipulera textkomponenten

ActionListener 3: Förenklat mellansteg 37 Inre klasser kan komma åt fält i yttre klasser

ActionListener 4: Metodreferens 38 1. ActionListener har en enda metod 3. Ange en referens till den metoden! Kompilatorn ser till att det skapas ett objekt av ActionListener-typ, som anropar makebold() 2. Implementera en metod med samma parametrar

Några viktiga lyssnarklasser 39 Knapp tryckt, menyval gjort, Slider eller scrollbar flyttad Markering i lista Musknappar Förflyttning av muspekare Tangent tryckt / släppt, tecken skrivet Skickas till komponenten som har tangentbordsfokus Komplicerat ofta är key bindings bättre Mer info på vanliga lösningar