Læringsmål for forelesningen

Slides:



Advertisements
Liknende presentasjoner
Trykk på mus eller tastatur for neste bilde…
Advertisements

GoOnline XP publisering Hvordan komme i gang med GoOnline XP. Denne presentasjonen tar deg steg for steg gjennom oppsett av nettsted med bruk av GoOnline.
Tabeller av objekter Klassen ArrayList
Hvordan etablere nettbutikk med GoOnline Commerce
GoOnline publisering Hvordan komme i gang med GoOnline. Denne presentasjonen tar deg steg for steg gjennom oppsett av nettsted med bruk av GoOnline Proffesional.
GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser LC191D Videregående programmering Semesterplan:
© 2006 IFS AB. All rights reserved.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
HTML og CSS introduksjon Veiledet selvstudium Webpublisering 10. januar 2008 Monica Strand 1Webpublisering – 10. januar 2008.
Grafisk design Visuell kommunikasjon
Filbehandling (Kapittel 8)
Brukerveiledning til NHOs PowerPoint-mal
Rammer/Frames HTML II IT og læring IT20 4. november 2004.
Uke 10 - Sortering, og hvordan lage en klasse for et klassebibliotek 21 okt. 2003, Arne Maus Inst. for informatikk, UiO.
Kontrollstrukturer (Kapittel 3)
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon januar 2005 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Objektorientert programmering i PHP del 2
Visma Enterprise introduksjonspresentasjon Hvordan bruke ny meny i Visma Enterprise HELHETLIG LØSNING FOR NORSKE VIRKSOMHETER Moderne og effektiv tjenesteproduksjon.
Tips og triks Strukturering av større applikasjoner Automatiserte tester. Kristian Johannessen
IS-102 Klassedefinisjoner
Gjenfinningssystemer og verktøy II
Java Server Faces (JSF) en introduksjon Frode Eika Sandnes.
C# for javaprogrammerere
Operativsystemer.  Tilstandsmaskiner kalles på engelsk Finite State Machines.  Tilstandsmaskiner er en metode til å beskrive systemer med logisk og.
Android-Programmering Våren Oversikt – PendingIntents Rollen til PendingIntents Vanlig bruk Deling Sending.
Jæger: Robuste og sikre systemer INF150 Programmering mandag 2.10 Default values – standardverdier ved oppstart MER OM: Sub-prosedyrer og sub-funksjoner.
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 11 Applet’s Hva karakteriserer applet’sside.
GUI-programmering, del 2 Enkle layout-håndterere Forskjellige typer hendelser og lyttere GUI-komponenter for valg (oppgave) LC191D Videregående programmering.
Jæger: Robuste og sikre systemer INF150 Programmering torsdag 31.8 Kapittel 3: Grunnlag for programmering i Visual Basic.
Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.
I dag snakker vi om: Brukergrensesnitt med kvalitet Bruksegenskaper Normans 7 stadier Testing med papirprototyp.
Tittel på presentasjonenSide Portal for leder En leder vil finne sine oppgaver fordelt på 2 mappekort Mappekortet Leder selvbetjening tilsvarer.
Teknikker for å bedre design- prosessen -Design by contract -Prototyping design -Fault-tree analyses.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
1 Arrayer og form(ularer) (Kapittel 4). 2 Mål  Forstå assosiative og superglobale arrays  Kunne behandle webformularer (forms)  Kjenne forskjellen.
Publisering på verdensveven Kursdag 2 VÅFF, våren 2002.
CSS Doing it in style!. CSS Cascading style sheets. Eget språk for presentasjon av dokumenter. Ligner Java-syntaks. Klasser av stiler for gjenbruk. Kaskaderende.
Andre funksjoner. Her kommer en beskrivelse av søkefunksjoner, knapper og annen funksjonalitet. 2.
1 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Programmering i Java tilpasset undervisning våren 2009 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet.
Samhandling og informasjon Kunnskaps- utvikling og refleksjon Menings- danning og over- talelse Skrive- kompetanser Handlinger og formål Kunn- skaps- lagring.
Jæger: Robuste og sikre systemer INF150 Programmering Kapittel 2: Problemløsning Kapittel 3.1 og 3.2.
Inflation og produktion 11. Makroøkonomi Teori og beskrivelse 4.udg. © Limedesign
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 9 GUI-komponenter De vanligste GUI-komponenteneside.
Termbaser Lars Nygaard. Termbaser Database over begreper Innhold –Definisjoner –Oversettelser –Leksikalske relasjoner –Eksempler.
1 Java Database Connectivity (JDBC) Norvald H. Ryeng
Android-Programmering Våren Introduksjon ActionBar Behovet for forandring Hva er Android ActionBar Tilpasning av ActionBar ActionBar - versjonshåndtering.
Hurtigreferanse for © 2013 Microsoft Corporation. Med enerett. Startskjermen i Lync Startskjermen i Lync inneholder fliser i huben til venstre, som du.
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 10 Mer om programmering av GUI Dialoger.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Ekstra mange tips til Oblig 3! 12. mars 2007 Are Magnus Bruaset og Arild Waaler Inst. for informatikk, UiO.
Befolkning og arbejdsmarked 7. Mikroøkonomi Teori og beskrivelse © Limedesign
JavaFX i kodeklubben Apps i Java. Programmering og programmeringsspråk Alle programmeringsspråk er egentlig like... men alt som følger med språket (verktøy,
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Kapittel 4 Skriving av klasser. 4.1 Anatomien til ein klasse Så langt har vi brukt ferdige klasser frå klassebiblioteket i Java Vi lagar objekt og brukar.
Kapittel 9 Polymorfi. 9.1 Sein binding Ofte er det perfekt match mellom typen til ein variabel og objektet han refererer til ChessPiece bishop;... bishop.
Kapittel 3 Bruk av klasser og objekt. 3.1 Å lage objekt Eit variabelnamn i Java representerer Ein primitiv verdi (f eks boolean, int ) Eit objekt (f eks.
Kapittel 10 Exceptions Handtering av exceptions Ein exception er eit objekt som representerer ein feil eller eit unntak Exceptions blir kasta av.
Android-Programmering Våren Oversikt Long-running operasjoner Introduksjon til Android services On-demand service Bruk av servicer på tvers av prosesser.
Android-Programmering Våren Introduksjon ActionBar  Behovet for forandring  Hva er Android ActionBar  Tilpasning av ActionBar  ActionBar - versjonshåndtering.
Iterator i Java boolean hasNext() E next() void remove()
Datakortet – Modul 3 Word 2003, Kap Modul 3.
Utskrift av presentasjonen:

Læringsmål for forelesningen Objektorientering Objektorientering og GUI Java-programmering GUI-komponenter i Java/Swing OO

GUI i Java Grafiske brukergrensesnitt (GUI) i Java lages vha. tre hovedtyper objekter: et hierarki av GUI-elementer: JFrame ytterst hierarki av JPanel-instanser inni basiselementer inni JPanel-instansene hendelser (events) hver type GUI-element sier fra om hva brukeren gjør med den vha. av hendelser lyttere (listeners) reaksjonen på hendelsene implementeres av lyttere

Et hierarki av GUI-elementer JFrame øverst/ytterst applikasjonsvindu med tittel og lukke, minimerings og maksimeringsknapper hierarki av JPanel-instanser inni en trenger egentlig kun én JPanel-instans, men ofte er det greit med flere for å få layout’en en ønsker den ytterste settes som JFrame’n sin contentPane basiselementer inni JPanel-instansene JLabel (statisk tekst) JButton (trykknapper, avkrysningsbokser, ...) JTextField, JTextArea (tekstfelt) JComboBox, JList (lister) ...

Hendelser og lyttere Det er tett kobling mellom GUI-komponenter, lyttergrensesnitt og hendelsesklasser Alle komponenter som brukeren kan gjøre noe med, for eksempel knapper, genererer en hendelser når de manipuleres av brukeren Lytter-objekter kobler seg til komponenter og “venter” på at hendelser skal inntreffe og komponenten sier fra ved å kalle tilsvarende lyttermetode Vi kan reagere på at noe (hendelsen) har skjedd, men som oftest er vi også interesserte i hva, f.eks. hvor muspekeren er, ikke bare at den er flyttet

Lytting på flere hendelseskilder Et og samme lytterobjekt, f.eks. hovedklassen til en applikasjon, kan lytte til og få hendelser fra flere komponenter Vi kan finne ut hvilket objekt som er opphav til en hendelse ved å benytte eventobjektets getSource-metode

Hovedklasse for applikasjon For små applikasjoner er det greit å samle logikken i en egen App-klasse App-klassen har en standard struktur: Konstruktøren instansierer hierarkiet av GUI-elementer JFrame applikasjonsvindu = new JFrame(); JPanel applikasjonsinnmat = new JPanel(); applikasjonsvindu.setContentPane(applikasjonsinnmat); Det er ofte lurt å ha ett felt for hvert (vesentlige) GUI-element øverst i klassen: JButton knapp1; i konstruktøren: knapp1 = new JButton(”Trykk meg!”);

Hovedklasse for applikasjon App-klassen har en standard struktur (forts.) App-klassen implementerer nødvendig lyttergrensesnitt, iht. hvilke GUI-elementer som GUI’et inneholder i klassedefinisjonen: class App implements ActionListener i konstruktøren: knapp1.addActionListener(this); hver lyttermetode (metode definert i et lyttergrensesnitt) må sjekke hvilken komponent som sier fra om en hendelse public void actionPerformed(ActionEvent ae) { if (ae.getSource() == knapp1) { // knapp1-logikk her } }

Demo av GUI-komponenter i Java sitt Swing-API SwingSet2 Demo av GUI-komponenter i Java sitt Swing-API

Sun sin Swing-tutorial er en god kilde til kodeeksempler

Container’e En container er et GUI-element som inneholder og organiserer andre GUI-elementer En frame er en container for hovedvinduet til applikasjonen. En frame er et frittstående vindu, som brukeren kan flytte og endre størrelsen på etter behov. Et panel er en container som kun ikke har eget utseende eller oppførsel, men som kun brukes til å organisere andre komponenter. Slike brukes typisk for å organisere innmaten i et applikasjonsvindu.

Nøstede paneler Containere som inneholder andre GUI- elementer danner et hierarkiet GUI-elementer legges inn med add-metoden basis-elementer legges inn i de innerste panelene Hierarkiet styres av to hensyn ryddig oppdeling av koden etter sammenhørende funksjoner ønsket om spesifikk visuell effekt vha. layout-objekter

Basis-elementer JLabel JButton, JCheckBox, JToggleButton, JRadioButton viser frem tekst og/eller ikon (ImageIcon) intern layout opp og til siden og ift. hverandre kan inneholde HTML! JButton, JCheckBox, JToggleButton, JRadioButton knapper med to hovedtilstander: av/på sier fra vha. ActionListener, actionPerformed og ActionEvent

Hvordan bli kjent med en ny GUI-element-type? Prøv den med SwingSet2-demo! Hvilke data håndterer den? sannhetsverdier (boolean), leses/settes med isSelected/setSelected Hvilke vesentlige egenskaper har den? har ikon og tekst for angi mening (get/setIcon, get/setText) Hvilket lyttergrensesnitt og –metoder og hendelsesklasser inngår i håndtering av hendelsen? ActionListener, actionPerformed og ActionEvent addActionListener og removeActionListener Prøv den i en enkel Swing-applikasjon!

JCheckBox Prøv den med SwingSet2-demo Hvilke data håndterer den? sannhetsverdi (boolean) isSelected/setSelected Hvilke vesentlige egenskaper har den? ikon og tekst get/setIcon og get/setText Hvilket lyttergrensesnitt og –metoder og hendelsesklasser inngår i håndtering av hendelsen? ActionListener, actionPerformed og ActionEvent addActionListener og removeActionListener Prøv den i en enkel Swing-applikasjon!

JSlider Prøv den med SwingSet2-demo Hvilke data håndterer? heltallsverdi innen intervall get/setValue, setMinimum, setMaximum Hvilke vesentlige egenskaper har den? såkalte ticks m/tekst hvilke ticks som finnes og om og hvordan de skal tegnes Hvilket lyttergrensesnitt og –metoder og hendelsesklasser inngår i håndtering av hendelsen? ChangeListener, stateChanged og ChangeEvent addChangeListener og removeChangeListener Prøv den i en enkel Swing-applikasjon!

JTextField Prøv den med SwingSet2-demo Hvilke data håndterer? tekst (String) get/setText Hvilke vesentlige egenskaper har den? skriftstype (Font) og antall kolonner (columns) get/setFont, get/setColumns Hvilket lyttergrensesnitt og –metoder og hendelsesklasser inngår i håndtering av hendelsen? ActionListener, actionPerformed og ActionEvent addActionListener og removeActionListener Prøv den i en enkel Swing-applikasjon!

JComboBox Prøv den med SwingSet2-demo Hvilke data håndterer den? lister (model) og valg av ett element (selection) get/setModel, get/setSelectedItem, get/setSelectedIndex Hvilke vesentlige egenskaper har den? om tekstfeltet er editerbart: get/setEditable Hvilket lyttergrensesnitt og –metoder og hendelsesklasser inngår i håndtering av hendelsen? action-hendelsen og item-hendelsen for selectedItem/selectedIndex-egenskapen Prøv den i en enkel Swing-applikasjon!

Eksempel: J Prøv den med SwingSet2-demo Hvilke data håndterer den og hvordan leses/settes de(t)? <type> get/set Hvilke vesentlige egenskaper har den? ? Hvilket lyttergrensesnitt og –metoder og hendelsesklasser inngår i håndtering av hendelsen? Listener, Performed og Event addListener og removeListener Prøv den i en enkel Swing-applikasjon!

Oppsummering Alle basis-elementer har samme ”struktur” dataverdi(er) essensielle egenskaper hendelser og tilhørende grensesnitt, metoder og klasser Å bli kjent med en komponent innebærer å oppsøke informasjon om hver del Hendelser De fleste GUI-elementer har egne typer hendelser Noen GUI-elementer genererer PropertyChangeEvent’er

LayoutManagers En LayoutManager er et objekt som hjelper til med å organisere innholdet i en container Flere predefinerte layout managers i standard Java klassebiliotek: FlowLayout BorderLayout GridLayout CardLayout GridBagLayout Defined in the AWT BoxLayout OverlayLayout Defined in Swing

LayoutManager-logikk Hver container har en standard LayoutManager, men vi kan også eksplisitt sette denne etter behov Hver layout manager har egne regler for hvordan komponentene skal arrangeres innbyrdes Noen layout managers tar hensyn til foretrukket størrelse eller innretning, andre gjør det ikke En layout manager prøver å justere layout etter hvert som nye komponenter legges til og hvis containeren endrer størrelse

FlowLayout FlowLayout plasserer så mange komponenter som mulig i en rad, før neste rad fylles. Nye rader lages automatisk etter behov for å få plass til alle komponentene Komponentene sentreres hvis ingenting annet er angitt, men kan også justeres til høyre eller venstre Horisontalt og vertikalt mellomrom kan også angis.

GridLayout GridLayout legger ut en containers komponenter i et rektangulært rutenett En komponent legges i hver celle og alle celler har samme størrelse Fylles fortløpende fra venstre til høyre og fra topp til bunn Størrelsen på cellen avgjøres av størrelsen på containeren

BoxLayout En BoxLayout organiserer komponentene enten horisontalt (i en rad) eller vertikalt (i en kolonne) Rekkefølge for plassering er top-til-bunn eller venstre-til-høyre Ved å kombinere flere containere som bruker BoxLayout i ulike retninger kan mange konfigurasjoner lages Usynlige komponenter kan legges til for å lage åpenrom mellom komponenter

Border Layout En BorderLayout definerer fem områder som komponenter kan plasseres i North South Center East West

BorderLayout forts. Hvert område viser én komponent (som typisk er en container) Størrelsen til hver av de fire ytre områdene justeres for å få plass til komponenten der Hvis ett eller flere av de ytre områder ikke fylles vil de andre områdene bruke plassen Senterområdet vil øke i plass og fylle tomme områder ved behov

Rammer En Border kan knyttes til en hvilken som helst Swing-komponent for å bestemme hvordan kantene skal tegnes opp Effektivt hjelpemiddel for å gruppere komponenter visuelt Klassen BorderFactory inneholder mange statiske metoder for å lage rammer Ramme til en komponent settes vha. setBorder

Dialoger En dialog er et vindu som vises foran det aktive vinduet (og som kan sperre for det) Kan benyttes til å: vise viktig informasjon gi brukeren mulighet til å bekrefte en handling la brukeren komme med nødvendig input velge standardobjekter, f.eks. farge eller fil En dialog boks har vanligvis et spesifikt formål og brukerinteraksjonen er kortvarig Klassen JOptionPane har metoder som forenkler opprettelsen av noen typer dialogbokser

JOptionPane-klassen (http://java. sun showMessageDialog – viser frem en melding showOptionDialog – lar brukeren velge et av flere alternativ showInputDialog – gi mulighet til å fylle inn en tekst

Spesialiserte dialogbokser - filvelger Valg av fil er en svært vanlig operasjon som Java støtter vha. klassen JFileChooser Brukeren kan bla rundt i filsystemet og filtrere hvilke filer som vises Brukes typisk for å støtte åpning og lagring av filer

Læringsmål for forelesningen Objektorientering Objektorientering og GUI Java-programmering GUI-komponenter i Java/Swing OO