Første
Oversigt
Java Foundation Classes serie, Planche nr. 36
Print af Java Foundation Classes
1 : Java Foundation Classes
Abstract Windows Toolkit (AWT)
java.awt.*
Swing-biblioteket
javax.swing.*
2 : JFC begreber
Komponenter og containerhieraki
Layout-managers
Event-håndtering
Skærmtegning
Tråde
3 : Komponenter og containerhieraki
Visuelle skærmelementer kaldes komponenter.
Komponenter er klasser
Kompenent-klasser er nedarvet fra java.lang.Component
Det er knapper, etiketter, indtastningsfelter, mv.
Containere er komponenter, der:
Indeholder andre komponenter
er nedarvet fra java.lang.Container
er vinduer, menuer, applets, paneler, mv.
4 : Layout-manager
En java-specialitet
5 : Event-håndtering
tastatur
mus
øvrige system
andre programmer
6 : En Swing-applikation
En grundlæggende ramme (JFrame)
ud af 3 muligheder: JFrame, JWindow og JApplet
Såkaldte "tunge" komponenter
En flade eller panel (eng: panel / pane) (JPanel)
Styrer placeringen af:
En knap (JButton)
En etiket (JLabel)
7 : Container-hierakiet
8 : Opbygning af billede
Opret med
new
Tilføj med
add()
-metoder
9 : Opgave
Opret en ny opgavefolder
Skriv en klasse, SwingApplet.java, der nedarver fra javax.swing.JApplet.
Opret globale variable, der peger på alle komponentobjekter
Skriv en public init() metode, som opretter og tilføjer komponenterne
Hint: Tidligere planche men uden JFrame!
JApplet er top-container, og nøgleord this kan bruges som reference.
Skriv en HTML-fil, SwingApplet.html, til at køre appletten
"Klip" evt. HTML-fil fra tidligere opgaver og ret klassenavne.
10 : JApplet vs. Applet?
Brug JApplet
når man arbejder med Swing-komponenter
dvs. J-klasser
Brug Applet
ved simpel grafik
rene AWT-komponenter
Aldrig
samtidig!
11 : Layout-managers
12 : Hvor?
13 : Opgave (fortsat)
Prøv
FlowLayout()
GridLayout()
BorderLayout()
Og
Hvad sker der, når man sætter null istedet for en layoutmanager?
14 : Uden layoutmanager!
setBounds(int, int, int, int)
15 : Objekt kommunikation
Beskeder (alm. metoder)
Hændelser ("events")
Undtagelser ("Exceptions")
16 : Hændelser ("Events")
Museklik,
Tastaturtryk,
Kompenentaktivering
17 : 2 modeller
Eventmodel 1.0
"Vandfaldsmetoden" ~ Windows-modellen
Eventmodel 1.1
"Abonnementsmetoden"
18 : Eventmodel 1.1
Objektet, der modtager hændelsen
f. eks. en knap
Hændelseslytteren ("Event Listener")
modtager hændelser af en bestemt type, f.eks. fra musebevægelser
19 : Event klasser
V.1.0: Én hændelsesklasse
java.awt.Event
V.1.1: En pakke hændelsesklasser:
java.awt.event.*;
20 : Implementer V.1.1
1. Beslut hvilken hændelser, man ønsker at bruge
2. Skriv kode for lyttermetoden
3. Registrer lytteren.
21 : Eksempel - Trin 1
22 : Eksempel - trin 1 (fortsat)
ActionListener
MouseListener
MouseMotionListener
KeyListener
23 : Eksempel: Trin 2
Lad appletten (eller applikationsklassen) implementere:
class MinKlasse
implements
Lytterinterface
Overskriv metoderne fra lytterklassen.
Skrive en speciel klasse og implementer metoderne den.
Mest velegnet til store programmer med mange komponenter
24 : Eksempel: Trin 2 (Eksempel)
25 : Eksempel: Trin 3
Hvis klassen selv er lytter:
kald tilføjelses-metode med
this
Hvis man har lavet en lytterklasse
kald tilføjelses-metoden med et objekt af klassen
26 : Eksempel: Trin 3 (fortsat)
Klassen selv lytter:
addActionListener (this);
MinActionListener er defineret
ml = new MinActionListener();
addActionListener(ml);
27 : Simpel eventhåndtering
28 : Opgave
Brug metode 1 (SwingApplet er lytterklassen)
29 : Hjælpetekster
setToolTipText(String)
Etiketten?
Appletten?
Panelet?
30 : Genvejstaster
setMnemonic(bogstav)
hvor bogstav er at type char eller int.
31 : SwingSet-demo
Åben Dos-box
gå til c:\jdk1.3\demo\jfc\SwingSet2
skriv:
appletviewer SwingSet2.html
32 : Applikationer
Skal oprettes ved hjælp af new
indeholde en public static void main(String a[]) - metode
Istedet for init()-metoden bruges en konstruktør
JFrame-objektet skal have en størrelse og placering
setBounds() kan bruges
JFrame-objektet skal gøres synlig med setVisible(true)
33 : Alternativ: JApplet i Frame
1. Opret en main-metode og...
2. Opret et objekt af typen SwingApplet
3. Opret et andet objekt, af typen JFrame - overskrift "NæstenApplet"
4. Tilføj JApplet-objektet til JFrame-objektets ContentPane
5. Sæt størrelse af Frame-objektet
6. Gør Frame-objektet synligt (metode show())
7. Kald init-metode på applet-objektet
8. Kald start-metode på applet-objektet
9. Kald validate-metode på applet-objekt
34 : Kør!
Skriv: appletviewer SwingApplet.html
og
Skriv: java SwingApplet
35 : Noter
System.exit(0)
36 : Pop-up JFrame
Skriv appletviewer SwingPjat.html
og
Skriv java SwingPjat
© 2000 BLA*net - Leif E. Andersen, leander@blanet.dk