Programmering i Java versjon 2001-05-18 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.

Slides:



Advertisements
Liknende presentasjoner
Repetisjon innkapsling static tabell av primitiv datatype LC191D Videregående programmering Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring.
Advertisements

GUI-programmering, del 3 Vinduslyttere Dialogvinduer GUI-komponenten JTable Egne datamodellklasser LC191D Videregående programmering Semesterplan:
Programmering i Java versjon august 2004 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Datafiler og serialisering Tekstfiler Scanner-klassen Binær overføring av data Direkte tilgang til filinnholdet Serialisering LC191D Videregående programmering.
Høgskolen i Sør-Trøndelag, Avdeling for informatikk og e-læring
Programmering i Java versjon august 2004 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 august 2004 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.
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.
Samarbeid mellom objekter
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.
Java 4 Mer om forgreninger While-løkker Ole Christian Lingjærde
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.
C# for javaprogrammerere
En gang til!? .
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.
Objekt Orientert Programmering (OOP). Objektorientering (OO)1/6 Objektorientering er en grunnleggende måte å organisere komplekse fenomener på.
Opplæring: Digital Diktering
Læringsmål for forelesningen
Programmering i Java versjon desember 2002 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.
Programmering i Java versjon desember 2002 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.
Programmering i Java versjon desember 2002 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 august 2004 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.
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 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 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 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik.
Programmering i Java versjon desember 2002 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.
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 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 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 Kap 06 Ordnede / Sorterte lister Oppgave nr 06_02 Polynomer Klassehierarki Javadokumentasjon.
Arv og polymorfi, del 3 Modifikatoren abstract side 2-3
Å lese tall fra en fil, klassen Scanner 1.Et Scanner-objekt kan knyttes til et strømobjekt eller til en streng. 2.Kan skanne teksten etter data av ulike.
Programmering i Java tilpasset undervisning våren 2009 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet.
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 7 Grafikk Fra AWT til Swingside 2.
Tabeller Dette er en tabell, eller array. Den kan defineres sånn som dette: public int[] heltallsTabell = new int[11]; //Her er 11 tabellens lengde for.
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 9 GUI-komponenter De vanligste GUI-komponenteneside.
Objekt, Instanser og referanser + litt til. Objekter  Instanser  Kan sees på som det samme. Personen Per kan være både et objekt og en instans av klassen.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Fag LO189D - Objektorientert programmering Objektorientert programmering© Else Lervik, TISIP - HiST/IDB vår-99Leksjon 10 Mer om programmering av GUI Dialoger.
Programmering i Java versjon september 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
Object  Klassen i java  Alle klasser arver fra denne om ikke noe annet blir spesifisert  ArrayList.add(Object instans)  Alle elementer formes til Object.
Programmering i Java versjon desember 2002 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else.
INF1000 (Uke 14) Eksamen V06 Grunnkurs i programmering Institutt for Informatikk Universitet i Oslo Are Magnus Bruaset og Arild Waaler.
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.
INF1000 (Uke 4) Mer om forgreninger, While-løkker
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.
Variabler, datatyper og uttrykk
Utskrift av presentasjonen:

Programmering i Java versjon Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14 Tekster, valg og vinduer Fokuslyttereside 2 Tekstkomponenterside 3-6 Å gi brukeren valget mellom alternativerside 7-9 Valg ved bruk av avkrysningsruterside 10 Valg ved bruk av radioknapperside 11 Valg ved bruk av listebokserside 12 Standarddialoger, klassen JOptionPaneside 14 Vinduer i Javaside 15 Klassetreet med vindusklasseneside 16 Å lage et vinduside Forskjellen mellom appleter og applikasjonerside Andre måter å programmere lyttere påside 22-23

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 2 Fokuslyttere •En FocusEvent inntreffer i det en komponent mottar eller mister fokus. •Nyttig dersom f.eks. brukerinput i et tekstfelt skal kontrolleres før brukeren får komme videre. Dersom input ikke er riktig, kan vi stille fokus tilbake til feltet (requestFocus()). •En klasse som skal beskrive en fokuslytter må implementere java.event.FocusListener: –public void focusGained() –public void focusLost() •Ofte er en av metodene tom.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 3 Tekstkomponenter •Klassen javax.swing.text.JTextComponent –public String getText() –public void setText(String tekst) –public void setEditable(boolean åpen) •Klassen javax.swing.JTextField –public JTextField() –public JTextField(String tekst) –public JTextField(int antKolonner) –public JTextField(String tekst, int antKolonner) –public void setHorizontalAlignment( int horisontalJustering) –public int getHorizontalAlignment() –public void setFont(Font nySkrifttype) –public void addActionListener( ActionListener enLytter) •Klassen javax.swing.JPasswordField –public JPasswordField() –public JPasswordField(int antKolonner) –public char[] getText() –public String getText() (deprecated! ) Object Component JTextComponent JTextAreaJTextField Container JComponent JPasswordField

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 4 Eksempel Et trykk på Skriv-knappen gir utskrift til konsollet: Oppstart: Endrer teksten etter at brukernavn og passord er akseptert: Teksten ser slik ut: Javel, så skriver jeg noe her og trykker på Skriv-knappen. Du kan skrive noe her dersom du skriver inn riktig passord.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 5 Meldingsutvekslingen skriv ”test” focusLost() skift fokus skriv ”test” skift fokus okPassord() setEditable(true) setEnabled(true) endre standardteksten requestFocus() brukernavnFeltpassordFeltpassordlytterentekstfeltskriveknapp

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 6 Vis programliste 14.1 side Gjør oppgaven side 415.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 7 Å gi brukeren valg mellom alternativer avkrysningsruter radioknapper listeboks

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 8 GUI-komponenter for valg GUI-komponentklasselytter skal implementere interfacet avkrysningsrute javax.swing.JCheckBoxjava.awt.ActionListener radioknapp javax.swing.JRadioButton, legges vanligvis i en javax.swing.ButtonGroup java.awt.ActionListener listeboks javax.swing.JList, legges vanligvis i en javax.swing.JScrollPane javax.swing.event. ListSelectionListener

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 9 GUI-komponenter for valg Object Component Container JComponent JToggleButton AbstractButton JRadioButton JList ButtonGroup JCheckBox

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 10 Valg ved bruk av avkrysningsruter Skal ha middag. Skal ha lunsj. Utskrift etter klikk på middag Utskrift etter klikk på lunsj Brukeren klikker først på middag, deretter på lunsj. Det genereres en ActionEvent for hvert av klikkene. Utskrift til konsollet: Vis programliste 14.2 side Gjør oppgavene side 420.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 11 Valg ved bruk av radioknapper Gjør oppgavene side 422. Vis programliste 14.3 side 421.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 12 Valg ved bruk av listebokser Kan angi hvorvidt brukeren skal kunne gjøre bare et enkelt valg, om et intervall skal kunne velges, eller om flere intervall skal kunne velges. Liste med fast innhold. Vis programliste 14.4 side Gjør oppgave 1 side 431.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 13 Valg ved bruk av listebokser •Endringene må gjøres i ”modellen” til listen. •”Modellen” representerer dataene som skal vises fram. •”Modellen” beskrives i klassen DefaultListModel. •Framvisningen (listen vi ser på skjermen) beskrives i klassen JList. Klikk på linjen ”Frøydis Hansestad” fører til: Liste med dynamisk innhold. Vis programliste 14.5 side Gjør oppgave 2 side 431.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 14 Standarddialoger, klassen javax.swing.JOptionPane 1.Meldingsdialoger: showMessageDialog() 2.Bekreftelsesdialoger: showConfirmDialog() 3.Valgdialoger: showOptionDialog() 4.Inputdialog: showInputDialog() •Ulike typer meldinger: ERROR_MESSAGE, INFORMATION_MESSAGE, WARNING_MESSAGE, QUESTION_MESSAGE eller PLAIN_MESSAGE •Ulike knappekombinasjoner: DEFAULT_OPTION, YES_NO_OPTION, YES_NO_CANCEL_OPTION eller OK_CANCEL_OPTION JOptionPane.showInputDialog()JOptionPane.showMessageDialog() Gjør oppgave 2 side 433.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 15 Vinduer i Java Primærvindu (klassen JFrame) med knapper for minimering, maksimering og lukking og tittellinje Interne vinduer (klassen JInternalFrame) med knapper for minimering, maksimering og lukking. Ingen deler av et internt vindu kan vises utenfor det primærvinduet det tilhører. Sekundærvindu eller dialog (klassen JDialog), lukkes dersom foreldrevinduet lukkes

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 16 Klassetreet med vindusklassene Object Component JFrameJApplet JInternalFrameDialog JDialog Container WindowJComponentPanel FrameJWindow Applet

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 17 Å lage et vindu import javax.swing.*; class TestJFrame { public static void main(String[] args) { JFrame mittFørsteVindu = new JFrame("Mitt første vindu"); mittFørsteVindu.setVisible(true); mittFørsteVindu.setSize(300, 200); // størrelsen i piksler } •Vinduet lukkes, men Java-tolkeren stopper ikke... •Vi kan stoppe Java-tolkeren med setningen System.exit(0);, men hvor skal vi plassere denne setningen? •Vi må lage et objekt som lytter til den hendelsen at vinduet lukker seg.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 18 Interface WindowListener og adapter-klasse WindowAdapter •Interface java.awt.event.WindowListener: void windowActivated(WindowEvent hendelse); void windowClosed(WindowEvent hendelse); void windowClosing(WindowEvent hendelse); void windowDeactivated(WindowEvent hendelse); void windowDeiconified(WindowEvent hendelse); void windowIconified(WindowEvent hendelse); void windowOpened(WindowEvent hendelse); •Vanligvis er de aller fleste metodene tomme, det er derfor laget en adapter- klasse (gjelder alle awt-lytter-interface med mer enn en metode): package java.awt.event; public abstract class WindowAdapter implements WindowListener { public void windowOpened(WindowEvent hendelse) {} public void windowClosing(WindowEvent hendelse) {} //... og så videre, bare tomme metoder }

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 19 Klassen mittBibliotek.VinduMedExit med testklasse /* * VinduMedExit.java E.L * Klassen beskriver et vindu der lukking fører til at applikasjonen stopper. */ package mittBibliotek; import javax.swing.*; import java.awt.event.*; public class VinduMedExit extends JFrame { public VinduMedExit(String tittel) { setTitle(tittel); addWindowListener(new Vinduslytter()); } private class Vinduslytter extends WindowAdapter { public void windowClosing(WindowEvent hendelse) { System.exit(0); } import mittBibliotek.*; class TestVinduMedExit{ public static void main(String[] args) { VinduMedExit mittFørsteVindu = new VinduMedExit("Mitt første vindu"); mittFørsteVindu.setVisible(true); mittFørsteVindu.setSize(300, 200); // størrelsen i piksler } Vi lar våre egne vinduer være subklasser til klassen VinduMedExit. Gjør oppgave 2 og 3 side 440.

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 20 Forskjeller mellom appleter og applikasjoner •Appleten –er subklasse til JApplet –må være offentlig –brukergrensesnittet bygges opp i init()-metoden –nettleseren lager applet-objektet og sørger for å sende meldingen init() til dette •Applikasjonen –er subklasse til JFrame (indirekte via VinduMedExit) –har vanligvis pakketilgang –brukergrensesnittet bygges opp i konstruktøren –krever at vi selv lager et objekt av klassen. Dette kan vi gjøre i main(). Vi starter selv opp metoden main().

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 21 Forskjeller mellom appleter og applikasjoner, eksempel public class FargeknappApplet2 extends JApplet { private Container guiBeholder; public void init() { guiBeholder = getContentPane(); guiBeholder.setLayout(new FlowLayout()); JButton knapp = new JButton("Trykk her!"); guiBeholder.add(knapp); Knappelytter knappelytteren = new Knappelytter(); knapp.addActionListener(knappelytteren); } private class Knappelytter implements ActionListener { public void actionPerformed(ActionEvent hendelse) { guiBeholder.setBackground(Color.red); } class FargeknappApplikasjon extends VinduMedExit { private Container guiBeholder; public FargeknappApplikasjon(String tittel) { super(tittel); guiBeholder = getContentPane(); guiBeholder.setLayout(new FlowLayout()); JButton knapp = new JButton("Trykk her!"); guiBeholder.add(knapp); Knappelytter knappelytteren = new Knappelytter(); knapp.addActionListener(knappelytteren); } private class Knappelytter implements ActionListener { public void actionPerformed(ActionEvent hendelse) { guiBeholder.setBackground(Color.red); } class TestFargeknappApplikasjon { public static void main(String[] args) { FargeknappApplikasjon mittAndreVindu = new FargeknappApplikasjon("Mitt andre vindu"); mittAndreVindu.pack(); mittAndreVindu.setVisible(true); }

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 22 Andre måter å programmere lyttere på: 1. Vinduet som lytter public class FargeKnappAppletThis extends JApplet implements ActionListener { private Container guiBeholder; public void init() { guiBeholder = getContentPane(); guiBeholder.setLayout(new FlowLayout()); JButton knapp = new JButton("Trykk her!!"); guiBeholder.add(knapp); knapp.addActionListener(this); } public void actionPerformed(ActionEvent hendelse) { guiBeholder.setBackground(Color.red); } Klassen som beskriver appleten implementerer selv ActionListener this registreres som lytterobjekt Den indre klassen Knappelytter er borte

Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik og Vegard B. Havdal, Stiftelsen TISIP og Gyldendal Akademisk ISBN Kapittel 14, side 23 Andre måter å programmere lyttere på: 2. En anonym klasse knapp.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent hendelse) { guiBeholder.setBackground(Color.red); } } ) ; Parentesene som omslutter argumentet til metoden addActionListener. Navnet på klassen vi skal lage objekt av er ikke med. Klassen er jo anonym. Klassen vil enten være en implementasjon av et lytterinterface eller en subklasse til en adapterklasse. Navnet på interfacet eller navnet på adapterklassen skal stå her. Parentesene som omslutter innholdet i den anonyme klassen new forteller som vanlig at vi skal lage et objekt Semikolonet avslutter setningen som begynner med knapp.add...