Osio 4: Graafinen käyttöliittymä

Samankaltaiset tiedostot
Osio 4: Graafinen käyttöliittymä

Osio 4: Graafinen käyttöliittymä

Osio 4: Graafinen käyttöliittymä

Osio 4: Graafinen käyttöliittymä

Osio 4: Graafinen käyttöliittymä

GRAAFISEN KÄYTTÖLIITTYMÄN OHJELMOINTI JAVA SWING

JAVA-OHJELMOINTI 3 op A274615

Java layoutit. Juha Järvensivu 2007

JAVA-OHJELMOINTI 3 op A274615

Olio-ohjelmointi Käyttöliittymä

Eclipse & WindowBuilder

Graafinen käyttöliittymä, osa 2

HELIA 1 (1) Outi Virkki Käyttöliittymät ja ohjelmiston suunnittelu :04

Java ja grafiikka. Ville Sundberg

Luento 5. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä

Ohjelmoinnin peruskurssien laaja oppimäärä

Graafinen käyttöliittymä, osa 1

Graafisen käyttöliittymän ohjelmointi

Ikkunointijärjestelmät

Tekstinkäsittelyn jatko Error! Use the Home tab to apply Otsikko 1 to the text that you want to appear here. KSAO Liiketalous 1

Dialogit. Juha Järvensivu 2008

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Pakkaukset ja määreet

Sovelmat. Janne Käki

Teskstialue (JTextArea) ja Scrollaus (JScrollPane)

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Lomakkeiden suunnittelu. Aiheina

Graafinen käyttöliittymä, osa 3

TAULUKOINTI. Word Taulukot

Haaga-Helia/IltaTiko ict2tcd005: Ohjelmiston suunnittelutaito 1/7 Anne Benson. Tällä opintojaksolla käytämme VS:n kolmen kokonaisuuden luomiseen:

Ohjelmointi 2 / 2010 Välikoe / 26.3

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op. Tietorakenneluokkia 2: HashMap, TreeMap

Lomakkeiden suunnittelu. Aiheina

Tapahtumapohjainen ohjelmointi

HELIA 1 (14) Outi Virkki Käyttöliittymät ja ohjlmiston suunnittelu

Java-kielen perusteet

Tietorakenteet, laskuharjoitus 7,

Osio 4: Tietovirrat. Properties- eli ominaisuustiedostot Logger: lokitietojen käsittely

4. Luokan testaus ja käyttö olion kautta 4.1

Lomakkeiden suunnittelu. Aiheina

Ohjelmoinnin jatkokurssi, kurssikoe

9. Periytyminen Javassa 9.1

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

Taulukoiden käsittely Javalla

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

7. Näytölle tulostaminen 7.1

Taulukot. Jukka Harju, Jukka Juslin

Java UI-komponentit (JTable) Juha Järvensivu 2007

Java Swing. Juha Järvensivu 2008

Luokka Murtoluku uudelleen. Kirjoitetaan luokka Murtoluku uudelleen niin, että murtolukujen sieventäminen on mahdollista.

Olio-ohjelmointi Javalla

H6: Tehtävänanto. Taulukkolaskennan perusharjoitus. Harjoituksen tavoitteet

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Sisällys. 6. Metodit. Oliot viestivät metodeja kutsuen. Oliot viestivät metodeja kutsuen

Javan GUI Scratchaajalle

1 Yleistä Web-editorista Web-editori -dokumentin luominen Pikatoimintopainikkeet Tallenna... 3

1 Tehtävän kuvaus ja analysointi

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Taulukot & Periytyminen

Javan perusteita. Janne Käki

Metodien tekeminen Javalla

Yleistä. Nyt käsitellään vain taulukko (array), joka on saman tyyppisten muuttujien eli alkioiden (element) kokoelma.

Sisältö. 2. Taulukot. Yleistä. Yleistä

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2008

Tietojen syöttäminen ohjelmalle. Tietojen syöttäminen ohjelmalle Scanner-luokan avulla

Sisällys. JAVA-OHJELMOINTI Osa 7: Abstrakti luokka ja rajapinta. Abstraktin luokan idea. Abstrakti luokka ja metodi. Esimerkki

JUnit ja EasyMock (TilaustenKäsittely)

Sen jälkeen Microsoft Office ja sen alta löytyy ohjelmat. Ensin käynnistä-valikosta kaikki ohjelmat

MICROSOFT EXCEL 2010

1. Omat operaatiot 1.1

Rajapinta (interface)

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Flash ActionScript osa 4

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Oppijan verkkopalvelun käyttöohjeiden laatiminen

Kompositio. Mikä komposition on? Kompositio vs. yhteyssuhde Kompositio Javalla Konstruktorit set-ja get-metodit tostring-metodi Pääohjelma

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Luento 6. T Ohjelmoinnin jatkokurssi T1 & T Ohjelmoinnin jatkokurssi L1. Luennoitsija: Otto Seppälä

on ohjelmoijan itse tekemä tietotyyppi, joka kuvaa käsitettä

Ohjelmoinnin perusteet Y Python

CADS Planner Electric perusteet

Taulukot Päivi Vartiainen 1

8. Näppäimistöltä lukeminen 8.1

Luokat ja oliot. Ville Sundberg

1 Yleistä Kooste-objektista Käyttöönotto Kooste-objektin luominen Sisällön lisääminen Kooste objektiin Sivut...

1. Kun käyttäjä antaa nollan, niin ei tulosteta enää tuloa 2. Hyväksy käyttäjältä luku vain joltain tietyltä väliltä (esim tai )

ITKP102 Ohjelmointi 1 (6 op)

Sisältö. 22. Taulukot. Yleistä. Yleistä

Suunnittelumalleja, MVC. Juha Järvensivu 2008

1 Funktiot, suurin (max), pienin (min) ja keskiarvo

15. Ohjelmoinnin tekniikkaa 15.1

TAULUKKO, KAAVIO, SMARTART-KUVIOT

Tekstinkäsittelyn jatko. KSAO Liiketalous 1

Android ohjelmointi Tunti 2. Käyttöliittymät ja resurssit

Sisällys. 1. Omat operaatiot. Yleistä operaatioista. Yleistä operaatioista

TAMPEREEN TEKNILLINEN YLIOPISTO KÄYTTÖOHJE TIETOVARASTON KUUTIOT

Graafisen käyttöliittymän automaattinen testaus

Ohjelmointi 5: Miinaharava

Word Taulukko-ominaisuus

Ohjelmoinnin peruskurssien laaja oppimäärä

Mikä yhteyssuhde on?

Transkriptio:

Tavoite: Opiskelija tuntee käyttöliittymän suunnittelun perusteita Opiskelija tuntee Javan Swing-tekniikan perusteet Opiskelija osaa työasemakäyttöliittymän toteutuksen perusteet käyttäen Javan Swing-tekniikkaa

Käyttöliittymän suunnittelun perusteet Graafinen käyttöliittymä eli GUI (Graphical user interface) GUI:hin liittyy look-and-feel look eli ulkoasu feel eli käyttötuntuma tavoitteena on käyttäjän näkökulmasta miellyttävä ja helposti omaksuttava käyttöliittymä

Käyttöliittymän suunnittelun perusteet Käyttöliittymien toteuttamisessa on kaksi päälinjaa: Työasemakäyttöliittymät toteutetaan ohjelmointialustan graafisten kirjastojen avulla Selainkäyttöliittymät perustuvat selaintekniikkaan ja XHTML-dokumentteihin Tässä esityksessä tutustutaan vain työasemakäyttöliittymien toteuttamiseen Javaohjelmointikielen graafisia käyttöliittymäkirjastoja hyväksikäyttäen

Käyttöliittymän suunnittelun perusteet Helppokäyttöinen käyttöliittymä perustuu yhdenmukaisuuteen Tavoitteena on yhdenmukaisuus eri sovellusten kesken Yhdenmukaisuuden tavoitteleminen asettaa rajoituksia käyttöliittymän toteuttajalle Rajoituksia kannattaa noudattaa: yhdenmukaisuutta ei synny sattumalta

Käyttöliittymän suunnittelun perusteet Käyttöliittymien yhdenmukaisuutta tavoitellaan tyylioppaiden avulla Tyyliopas on yhdenmukaisuusvaatimus, jonka mukaan käyttöliittymä tulisi toteuttaa Tyyliopas keskittyy käyttöliittymän ja käyttäjän väliseen vuorovaikutukseen Tyylioppaalla on yhä kasvava vaikutus myös sovelluksen toteutukseen. Mm. käyttöliittymäkomponenttien toteuttaminen edellyttää tyylioppaan olemassaoloa

Käyttöliittymän suunnittelun perusteet Java-työasemasovellusten tyyliopas on nimeltään Java Look and Feel Design Style Guide vuodelta 1999 Tyyliopas löytyy osoitteesta http://java.sun.com/products/jlf/ed1/dg/index.htm Tässä yhteydessä keskitytään jatkossa ohjelmoijan näkökulmaan käyttöliittymästä Tarkempi tutustuminen tyylioppaaseen jää opiskelijan itsenäisen opiskelun varaan

Käyttöliittymän suunnittelun perusteet Käyttöliittymän toteutus noudattaa MVC-mallia M = model eli sovelluslogiikka V = View eli käyttäjän käyttöliittymä C = Controller eli käyttäjän toimenpiteiden välittäjä Prosessi on seuraava: Käyttäjä toimittaa kontrollerin välityksellä ohjaustoimenpiteet sovellukselle Sovelluslogiikka suorittaa toimenpiteen ja informoi tilan muutoksesta käyttöliittymää Käyttöliittymä muuttaa ulkoasunsa muutosta vastaavaksi käyttäjälle

Javassa kaksi erillistä GUI-kirjastoa AWT (Abstract Window Toolkit) perustuu paikallisen sovelluskehitysalustan (local platform) tarjoamiiin valmispalveluihin seuraus: AWT-käyttöliittymien ulkoinen tyyli riippuu sovelluskehitysalustasta Swing-käyttöliittymä on toteutettu yhdenmukaisena mahdollisimman alustariippumattomasti seuraus: Swing-käyttöliittymien ulkoinen tyyli on aina yhdenmukainen

Graafisten käyttöliittymien käytännön toteuttaminen perustuu käyttöliittymäkomponentteihin Käyttöliittymäkomponentti (tai kontrolli) on valmisosa, jota voidaan käyttää käyttöliittymän toteutuksessa Esimerkiksi komentopainikkeet, radionapit ja valintalistat ovat käyttöliittymäkomponentteja

Swing-komponentit on toteutettu Java-kielellä ja niitä kutsutaan lightweight-komponenteiksi AWT-komponentit ovat heavyweight-komponentteja heavyweight-komponenttien toteutus perustuu käytettyyn laitealustaan ja ne kommunikoivat laitealustan kanssa ns. peer-luokan avulla Swing-komponenteissa on aina osia, jotka on pakko toteuttaa heavyweight-komponenttien avulla esimerkiksi ikkuna on aina luotava laitealustan paikallisen ikkunointijärjestelmän keinoin

Swing-tekniikan GUI-komponentteihin liittyy kolme peruskäsitettä: komponentit (components) tapahtumat (events) kuuntelijat (listeners)

: komponentit otsikkoteksti (label) muokkausruutu (text field) komentopainike (button) valintaruutu (check box): radionappi (radio button) yhdistelmäruutu (combo box) valintalista (list) paneeli (panel) muuttumattoman tekstin esittäminen tekstitiedon esittäminen ja sen muuttaminen käyttäjän toimesta sovelluksen toiminnon aktivointi kaksiarvoisen valinnan tekeminen valinta annetusta arvojoukosta käyttäjä voi valita syöttötiedon alasvetovalikosta tai kirjoittaa sen ruutuun käyttäjä voi valita yhden tai useamman vaihtoehdon valintalistasta näytöllä oleva alue, jossa voidaan esittää muita käyttöliittymäkomponentteja

: Tarvitset seuraavia komponentteja harjoituksissa: otsikkoteksti (label) muokkausruutu (text field) komentopainike (button) yhdistelmäruutu (combo box) paneeli (panel) muuttumattoman tekstin esittäminen tekstitiedon esittäminen ja sen muuttaminen käyttäjän toimesta sovelluksen toiminnon aktivointi käyttäjä voi valita syöttötiedon alasvetovalikosta tai kirjoittaa sen ruutuun näytöllä oleva alue, jossa voidaan esittää muita käyttöliittymäkomponentteja

Osa Swing-komponenteista on säilöjä (container), joihin muut Swing-komponentit voidaan tallentaa kehykset (frames) paneelit (panels) appletit (applets) eli sovelmat

Tapahtuma (event) on objekti, joka kuvaa jotakin käyttäjän tekemää toimenpidettä hiirtä siirretään (mouse move) hiirtä raahataan (mouse drag) hiiren painiketta painetaan (a mouse button is clicked) näppäimistöltä näppäillään merkki (a keyboard key is pressed) ajastimen aika päättyy (a timer expires)

Kuuntelijaobjekti (listener object) odottaa kunnes jokin tapahtuma herättää sen Tapahtuman syntyessä komponenttiobjekti luo tapahtumaobjektin ja välittää sen kuuntelijaobjektille kutsumalla kuuntelijaobjektin metodia Kuuntelijaobjekti tunnistaa tapahtuman ja käynnistää siihen liittyvän toimenpiteen

Opintojakson käyttämässä oppikirjassa Deitel, Deitel: Java How To Program graafisen käyttöliittymän toteutuksesta löytyy tietoa: Luvussa 11 sivuilla 510-594 esitetään GUI:n peruslogiikka ja peruskomponentit. Luku käsitellään osiossa 4. Luvussa 12 sivuilla 595-637 esitetään kaksiulotteisen grafiikan toteutus Java-käyttöliittymässä. Luvusta käsitellään osiossa 4 vain muutamia soveltuvia osia. Luvussa 22 sivuilla 1005-1051 syvennetään luvun 11 sisältöä erityisesti Swing-tekniikan osalta. Luku käsitellään osiossa 4.

Sovellus käyttää kolmen perustyypin ikkunoita kommunikoidessaan käyttäjän kanssa: asiakirjaikkunoita (document window) kohteen tietojen esittämiseen keskusteluikkunoita (dialog window) toimintojen tarkentamiseen sanomaikkunoita (message box) poikkeuksellisten viestien välittämiseen.

: Sanomaikkuna import javax.swing.joptionpane; public class Sanoma_1 { public static void main( String args[] ) { // Määrittele paneeli, sovellus, ilmoitus, jatkoehdotus ja sanoma JOptionPane paneeli; String sovellus, ilmoitus, jatkoehdotus, sanoma; sovellus = "Kirjanpito"; ilmoitus = "Viennin debet ja kdedit eivät täsmää."; jatkoehdotus = "Korjaa debet- ja kredit-summat yhtä suuriksi."; sanoma = ilmoitus + "\n" + jatkoehdotus; } } paneeli = new JOptionPane(); paneeli.showmessagedialog (null, sanoma, sovellus, JOptionPane.QUESTION_MESSAGE);

: Sanomaikkuna import javax.swing.joptionpane; public class Sanoma_1 { public static void main( String args[] ) { // Määrittele paneeli, sovellus, ilmoitus, jatkoehdotus ja sanoma JOptionPane paneeli; String sovellus, ilmoitus, jatkoehdotus, sanoma; sovellus = "Kirjanpito"; ilmoitus = "Viennin debet ja kdedit eivät täsmää."; jatkoehdotus = "Korjaa debet- ja kredit-summat yhtä suuriksi."; sanoma = ilmoitus + "\n" + jatkoehdotus; } } paneeli = new JOptionPane(); paneeli.showmessagedialog (null, sanoma, sovellus, JOptionPane.QUESTION_MESSAGE);

Itsenäinen harjoitustehtävä viikolle 3: Toteuta sanomaikkuna Tee myös seuraavia kokeiluja: muuta ilmoitustekstiä ja jatkoehdotustekstiä vaihda sanomaikkunan tyypin määrittelevää parametria ja tarkastele, minkä tyyppisiä ikoneita ja komentopainikkeita sanomaikkunaan ilmestyy mieti, missä tilanteessa mikin vaihtoehto on tarpeen vihjeitä saat kirjan luvusta 11.2 Huom: Tarvitset sanomaikkunaa viikolla 4

Container: komponentti, joka sisältää muita komponentteja containerit voidaan jakaa kahteen luokkaan: ylemmän tason containerit (Frame, Dialog) alemman tason containerit (panel, scroll pane jne.)

Container: Swing-käyttöliittymän sisältämässä sovelluksessa on vähintään yksi ylemmän tason container Ylemmän tason containerilta peritään ominaisuudet, joita tarvitaan mm. tapahtumankäsittelyyn Ylemmän tason containerit jakaantuvat kolmeen päätyyppiin: JFrame toteuttaa asiakirjaikkunan JDialog toteuttaa keskusteluikkunan JApplet toteuttaa selaimessa toimivan käyttöliittymän (ei kuulu tämän opintojakson aihepiiriin)

Container-hierarkia: Ylemmän tason container sisältää alemman tason containereita Alemman tason container voi sisältää joko muita containereita tai kontrolleja Kontrolleja ei voi liittää suoraan ylemmän tason containeriin Ikkunan toteutuksesta tulee siis vähintään kolmitasoinen: ylemmän tason container alemman tason container kontrollit

JFrame-container sisältää ikkunan ulkonäköön liittyviä ominaisuuksia ikkunan koko otsikkoteksti jne. sisältää ikkunan vakiotoimintoja ikkunan sulkeminen ikkunan pienentäminen ikkunan näkyviin tuominen / piilottaminen jne.

JFrame-ikkunan luominen: import javax.swing.jframe; Ikkunan otsikko public class OmaFrame { public static void main(string[] args) { JFrame frame = new JFrame("Demoframe"); frame.setlocation(100, 100); // Ikkunan paikka frame.setsize(400, 300); // Ikkunan koko frame.setvisible(true); // Näytä ikkuna frame.setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); // Oletuslopetus } }

JFrame-ikkunan luominen (toinen vaihtoehto): import javax.swing.jframe; public class OmaJFrame extends JFrame { // kontrollien määrittely tähän public OmaJFrame() { // kontrollit luodaan ja sijoitetaan // ikkunaan muodostimessa setlocation(100, 200); // Ikkunan paikka setsize(400, 300); // Ikkunan koko setvisible(true); // Näytä ikkuna } public static void main ( String args [] ) { // Luodaan ikkuna OmaJFrame jf = new OmaJFrame (); // Ikkunan sulkeminen päättää sovelluksen jf.setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); } }

JFrame-ikkunan voi luoda näinkin (huomaa ero!): import javax.swing.jframe; public class OmaJFrame extends JFrame { // kontrollien määrittely tähän public static final int WIDTH = 300; public static final int HEIGHT = 200; public OmaJFrame() { // kontrollit luodaan ja sijoitetaan // ikkunaan muodostimessa setlocation(100, 200); // Ikkunan paikka setsize(width, HEIGHT); // Ikkunan koko setvisible(true); // Näytä ikkuna } public static void main ( String args [] ) { // Luodaan ikkuna OmaJFrame jf = new OmaJFrame (); // Ikkunan sulkeminen päättää sovelluksen jf.setdefaultcloseoperation (JFrame.EXIT_ON_CLOSE); } }

Alemman tason containerit: Ylemmän tason container sisältää vain alemman tason containereita Yemmän tason container sisältää alemman tason oletuscontainerin, jota kutsutaan nimellä ContentPane Alemman tason container-tyyppejä on useita: JPanel vaikuttaa vain kontrollien sijoitteluun JScrollPanevoi sisältää myös vieritinpalkit JTabbedPane sisältää myös välilehdet Tällä opintojaksolla käsittelemme ainoastaan Jpanelconteineria

Alemman tason container: Jotta ylemmän tason containeriin (esim. JFrame) voidaan liittää kontrolli, tarvitaan ensin alemman tason container (säilö) Alemman tason containeriin (säilöön) voidaan liittää kontrolleja: Container con = frame.getcontentpane(); con.add(new JButton("OK"));

Layout Management tarkoittaa kontrollien sijoittelun hallitsemista ikkunassa Alemman tason containeriin (säilöön) liitetään kontrollien lisäksi Layout manageri, joka ohjaa containerin kontrollien asettelua ikkunaan Layout managerien toiminta on automaattista Ne sijoittelevat kontrollit oman politiikkansa mukaisesti ikkunaan vasemmalta oikealle pääsääntöisesti siinä järjestyksessä, jossa kontrollit on lisätty containeriin (säilöön) Layout Manager asetetaan containeriin ennen kontrollien lisäämistä

Layout Manageria ei ole pakko käyttää, jolloin luovutaan Layout Managerista (layout = null) Kontrollien paikka määritellään tällöin absoluuttisen osoitteen avulla Seurauksena on kuitenkin ongelmia: jokaisen komponentin koko ja paikka on pakko laskea tarkasti ylemmän tason containerin (esim. JFrame) koon muuttaminen ei vaikuta alemman tason containeriin seurauksena ikkunan ulkoasun sekavuus ja joustamattomuus ikkunan sisäisten valmisosien toteutus vaikeutuu, kun alemman tason containereita ei voida käyttää helposti valmisosina

Javassa on käytettävissä seuraavat Layout managerit: FlowLayout BoxLayout GridLayout BorderLayout CardLayout GridBagLayout

FlowLayot: Asettelee komponentit vasemmalta oikealle riveittäin Aloittaa tarvittaessa uuden rivin On oletus Layout Manager JPanel:ille

FlowLayot public FlowLayout() sijoittaa komponentit keskitetysti viiden pikselin etäisyydelle toisistaan niin vaaka- kuin pystytasossa public FlowLayout(int alignment) sijoittaa komponentit parametrin määräämällä tavalla viiden pikselin etäisyydelle toisistaan public FlowLayout(int align, int hgap, int vgap) sijoittaa komponentit parametrin määräämällä tavalla vaakatasossa hgap-parametrin määräämälle etäisyydelle ja pystytasossa vgap- parametrin määräämälle etäisyydelle toisistaan

FlowLayot huomaa: Layout Managerille voidaan esittää toiveita kontrollien asettelusta esimerkiksi muodostimen valinnan yhteydessä, mutta kontrollien lopullisen koon ja paikan päättää kuitenkin Layout Manager

BorderLayout: BorderLayout jakaa ikkunan neljään alueeseen: East, South, West, North, Center Ikkunan koon muuttuessa vain Center-alueen koko muuttuu JFrame ContentPane oletus Layout Manageriksi North West Center East South

LayoutManagerin liittäminen säilöön: Container con = frame.getcontentpane(); con.setlayout (new BorderLayout()); Käyttö sitten myöhemmin: con.add( buttonjpanel, BorderLayout.SOUTH ); Tai con.add( new JButton( OK ), BorderLayout.SOUTH );

BorderLayoutin avulla saadaan luotua tyypillinen asiakirjaikkuna. Ikkunassa ovat seuraavat osakokonaisuudet: Valikkorivi (NORTH) Ominaisuudet (CENTER) Komentopainikkeet (SOUTH)

BorderLayoutin osakokonaisuudet ovat itsenäisiä paneleita, joissa puolestaan käytetään seuraavia asettelumalleja: Valikkorivi Ei asettelumallia JMenuBar-kontrolli (NORTH) Ominaisuudet GridLayout (CENTER) Komentopainikkeet FlowLayout (SOUTH)

GridLayout: GridLayout järjestää kontrollit taulukon muotoon riveihin ja sarakkeisiin riveittäin vasemmasta yläreunasta alkaen Mikäli jokin gridin solu halutaan jättää tyhjäksi, on siihen lisättävä tyhjä otsikkoteksti Kaikki solut määritellään saman kokoisiksi: Rivin korkeudeksi valitaan korkeimman solun korkeus Sarakkeen leveydeksi valitaan leveimmän solun leveys Esimerkki: DemoJPanel = new JPanel(); // Käytetään GridLayout-manageria. 3 riviä 2 saraketta. DemoJPanel.setLayout( new GridLayout( 7, 3) );

GridbagLayout: GridbagLayout järjestää kontrollit taulukon muotoon riveihin ja sarakkeisiin riveittäin vasemmasta yläreunasta alkaen Tosin kuin GridLayout taulukon solut voidaan täyttää satunnaisessa järjestyksessä

BoxLayout: BoxLayout järjestää kontrollit järjestykseen yhteen riviin (vierekkäin) tai yhteen sarakkeeseen (alekkain) BoxLayout pyrkii säilyttämään kontrollin paikan ja koon annettujen ohjeiden mukaisesti

Ikkunan ulkoasun luonti: Luonnosteluvaihe luonnostele ikkunan ulkoasu ja siinä tarvittavat kontrollit luonnostele ikkunassa tarvittavat panelit luonnostele paneleissa tarvittavat Layout Managerit Luontivaihe luo ikkuna luo tarvittavat panelit liitä paneliin tarvittava Layout Manager luo tarvittavat kontrollit alusta kontrollien ominaisuudet liitä kontrollit paneliin liitä panelit ikkunaan

Object Component AWT-luokat Container Window Frame JFrame JComponent Swing-luokat JPanel JLabel JTextComponent JMenuBar Abstract Button JTextArea JTextField JButton JMeniItem JMenu

Miten viikon 3 ryhmäharjoitustehtävä kannattaa toteuttaa: Aluksi määrittele import-määrein ne luokat, joita toteutuksessa tarvitaan. Määrittele import-lause kullekin tarvittavalle luokalle Määrittele säilö-luokan (container) ilmentymä ja sille BorderLayoutasettelumalli Määrittele paneli, johon varsinaiset kontrollit tulevat. Määrittele panelille tarvittava asettelumalli. Valikkorivi ei tarvitse panelia. Luo tarvittavat kontrollit ja lisää ne paneliin. Liitä paneli aluksi luotuun säilö-luokkaan (containeriin) Tee main-funktio ja testaa sen avulla ikkuna.

Miten viikon 3 ryhmäharjoitustehtävä kannattaa toteuttaa: Lopuksi kokoa kolme erikseen toteutettua ikkunan eri panelia samaan ikkunaan, jolloin saat esille ikkunan lopullisen ulkoasun.

Työn iloa!