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