Grundläggande programmering, STS 1, VT 2007. Sven Sandberg
Föreläsning 19
●
Förra gången:
–
–
Teori om konstanter
Grafiska användargränssnitt
●
●
●
●
Enkla standard-dialoger m.h.a. JOptionPane
Avancerade fönster byggs upp hierarkiskt av
komponenter
– JFrame, JPanel, JTextField, JCheckBox,
JButton
Händelsehantering
– ActionListener
– void actionPerformed(ActionEvent e)
Placering av komponenter
– LayoutManager, BoxLayout
Föreläsning 19
●
Idag:
–
Komplettering på dugga
–
Essä
–
Mer GUI!
●
●
●
●
●
●
Sammanfattning av förra gången
Utseende: färg, bilder, teckensnitt osv
Ange storlek på komponenter
Mer om LayoutManagers. GridBagLayout
Fönster med variabelt antal objekt
Hur man visar 1- och 2-dimensionella arrayer
Komplettering på duggan
●
●
●
De som fick 7–8 p på duggan kan
komplettera genom inlämningsuppgift
Ska epostas in senast måndag 28 maj kl
12:00 (om en vecka)
Självständig lösning
–
–
●
Stickprovskontroll i form av korta muntliga
examinationer (snälla)
29 och 30 maj – kolla mail den 28, var beredd
dessa datum
Lämna in exakt så som det står på
uppgiftsbladet
Omduggor, komplettering
och kvalitetspoäng
●
●
Komplettering ger inga kvalitetspoäng
Omduggor i augusti och januari ger
kvalitetspoäng
–
–
●
Senare omduggor ger inga kvalitetspoäng
–
●
Precis som ordinarie dugga
Kvalitetspoäng från övriga moment kan
användas på dessa omduggor
Kvalitetspoäng nollställs efter januariduggan
Man får göra omdugga endast om man inte
är godkänd tidigare
Essä:
När?
Börja fundera nu!
●
●
Fundera under projektets gång
●
Tips: börja skriva så fort som möjligt
●
Se hemsidan
●
Deadline 5 juni
Grafiska användargränssnitt
●
Se:
–
Skansholm 6.1–6.13
http://java.sun.com/javase/6/docs/api/ ,
http://java.sun.com/docs/books/tutorial/ui/features/components.html
–
●
Behövs till:
–
–
●
Lab 5
Vissa projekt
Poäng, egentligen:
–
Lär er slå i hjälpen
(MYCKET viktigt
att kunna för
programmerare)
Vi minns: Avancerade GUI:
Överblick
●
Bygg GUI
–
●
Starta igång det hela
–
●
Från sina beståndsdelar, t.ex. knappar och
textrutor
Standard-procedur, lär utantill
Hantera händelser, t.ex. musklick
–
Metod för att hantera händelser anges då
GUI:et byggs
Vi minns: Avancerade GUI:
Bygg GUI
●
Byggs hierarkiskt
–
–
–
–
JFrame är ett fönster
JPanel är en s.k. container-komponent:
kan innehålla många andra komponenter
Alla fönstrets komponenter läggs i JPanel:en
(textrutor, knappar osv)
Komponent ”läggs i” annan komponent m.h.a.
metoden add
JFrame
JPanel
Komponent Komponent
Vi minns: Avancerade GUI:
Bygg GUI
●
Skapa en JFrame (ett fönster)
●
Skapa en JPanel (att lägga komponenter i)
●
Skapa komponenter
–
●
Ändra komponenters egenskaper
–
●
t.ex. färg, text, storlek
Lägg komponenterna i din JPanel
–
–
●
t.ex. textrutor, knappar
metoden add
komponenternas läge kan anges
Lägg din JPanel i din JFrame
Avancerade GUI:
Händelsehantering
●
Händelser:
–
●
En knapp trycks in, en kryssruta kryssas, osv
Vi kan ange en metod som anropas så fort
en händelse inträffar. 4 steg:
–
Importera:
Lär utantill eller läs innantill
import java.awt.event.*;
–
I klassdefinitionen:
class NamnOchGlass implements ActionListener {
–
Skapa metoden actionPerformed:
public void actionPerformed(ActionEvent e) {
}
–
Ange att actionPerformed ska anropas när
en knapp trycks (när vi bygger fönstret):
knapp.addActionListener(this);
Avancerade GUI:
LayoutManager
●
Layout:
–
●
Vi kan byta LayoutManager om vi vill
ändra utseendet
–
●
●
När komponenter läggs in i en JPanel,
bestämmer ett objekt av klassen
LayoutManager var de hamnar
Metoden setLayoutManager i JPanel
Vi kan ha nästlade JPanel-er för
avancerad layout
Vi kan lägga till osynliga objekt för att
skapa mellanrum
–
Box.createRigidArea(new Dimension(5, 5))
Avancerade GUI:
Praktiska klasser
●
Byggstenar (import javax.swing.*;)
–
–
–
JFrame – ett fönster
JPanel – fönstrets innehåll (allt utom ramen)
JComponent – basklass som andra ärver från:
JButton
JTextField
JSpinner
JCheckBox
JList
JRadioButton
JComboBox
JSlider
Avancerade GUI:
Praktiska klasser
●
Starta igång det hela
(import javax.swing.*;)
–
●
Hantera händelser
(import java.awt.event.*;)
–
●
Runnable, SwingUtilities
Runnable, SwingUtilities
Arrangera komponenter snyggt i fönstret
(import javax.swing.*;)
– BoxLayout, BorderLayout, GridLayout, Box
http://java.sun.com/docs/books/tutorial/uiswing/layout/visual.html
(import java.awt.*;)
–
Dimension
Avancerade GUI:
Sammanfattning
●
Använd hjälpen
Alla klasser:
http://java.sun.com/javase/6/docs/api/
Komponenter:
http://java.sun.com/docs/books/tutorial/ui/features/components.html
Layouter:
http://java.sun.com/docs/books/tutorial/uiswing/layout/visual.html
Avancerade GUI:
Sammanfattning
Var inte för
ambitiös
●
–
–
●
Få saker att fungera först, gör det eventuellt
snyggt senare
Snygghet bedöms inte!
Studera exempel
T.ex. mina, eller
http://java.sun.com/docs/books/tutorial/ui/features/components.html
Avancerade GUI:
Sammanfattning
Var
inte
för
ambitiös