Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

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

Liknende presentasjoner


Presentasjon om: "Programmering i Java versjon 2001-05-18 Kun til bruk i tilknytning til læreboka ”Programmering i Java” skrevet av Else Lervik."— Utskrift av presentasjonen:

1 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

2 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.

3 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

4 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.

5 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

6 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.

7 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

8 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

9 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

10 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.

11 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.

12 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.

13 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.

14 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.

15 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

16 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

17 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.

18 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 }

19 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.

20 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().

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

22 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

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 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...


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

Liknende presentasjoner


Annonser fra Google