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ä

JAVA-OHJELMOINTI 3 op A274615

Java layoutit. Juha Järvensivu 2007

GRAAFISEN KÄYTTÖLIITTYMÄN OHJELMOINTI JAVA SWING

JAVA-OHJELMOINTI 3 op A274615

Olio-ohjelmointi Käyttöliittymä

Graafinen käyttöliittymä, osa 2

Eclipse & WindowBuilder

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

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

Ohjelmoinnin peruskurssien laaja oppimäärä

Ikkunointijärjestelmät

Java ja grafiikka. Ville Sundberg

Dialogit. Juha Järvensivu 2008

Teskstialue (JTextArea) ja Scrollaus (JScrollPane)

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

Graafinen käyttöliittymä, osa 3

Lomakkeiden suunnittelu. Aiheina

Lomakkeiden suunnittelu. Aiheina

Lomakkeiden suunnittelu. Aiheina

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

TAULUKOINTI. Word Taulukot

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

Javan GUI Scratchaajalle

Java Swing. Juha Järvensivu 2008

Graafisen käyttöliittymän ohjelmointi

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2008

Tapahtumapohjainen ohjelmointi

CADS Planner Electric perusteet

Graafinen käyttöliittymä, osa 1

Taulukot Päivi Vartiainen 1

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

Harjoitus 3: Flash-komponenttiarkkitehtuuri ( )

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

TAULUKKO, KAAVIO, SMARTART-KUVIOT

Java Swing. Juha Järvensivu 2007

Tietorakenteet, laskuharjoitus 7,

Ohjelmointi 2 / 2010 Välikoe / 26.3

MICROSOFT EXCEL 2010

GeoGebra-harjoituksia malu-opettajille

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

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

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

Evaluointidokumentti

2020 Fusion. What s New in Version 6? What s New in Version 6? 1 of Fusion

Tilastokeskuksen rajapintapalveluiden käyttöönotto QGISohjelmistossa

Graafisen käyttöliittymän automaattinen testaus

Word Taulukko-ominaisuus

Olio-ohjelmointi Javalla

Ohjelmistoarkkitehtuurit Syksy 2009 TTY Ohjelmistotekniikka 1

Taulukoiden käsittely Javalla

CSS-kielen avulla määritellään HTML-dokumentin tyyli. CSS avulla voidaan tarkemmin määritellä eri elementtien ominaisuuksia.

VisualStudio Pikaopas, osa 1: WEB sivujen suunnittelu

Ohjeet Libre Officen käyttöön

Taulukot. Jukka Harju, Jukka Juslin

Sovelmat. Janne Käki

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

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Ohjelmoinnin peruskurssien laaja oppimäärä

Opettajan pikaopas Opintojaksopalaute-järjestelmään

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

QT tyylit. Juha Järvensivu 2008

Testivetoinen ohjelmistokehitys

Sähköposti ja uutisryhmät

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

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

Ohjelmointi 5: Miinaharava

Ensin klikkaa käynnistä-valikkoa ja sieltä Kaikki ohjelmat valikosta kaikki ohjelmat

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

Javan perusteita. Janne Käki

Oppijan verkkopalvelun käyttöohjeiden laatiminen

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

Tapahtumat. Johdanto Ikkunointi Ikkunatapahtumat Päätapahtumasilmukka Tapahtumien käsittely Olioiden välinen kommunikointi.

Tekstinkäsittelyn jatko. KSAO Liiketalous 1

Opintojaksopalautejärjestelmä Opettajan OPAS

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

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

KESKUSTANUORTEN NETTISIVUT- OHJEITA PIIRIYLLÄPITÄJÄLLE 1. KIRJAUTUMINEN

KUVAN TUOMINEN, MUOKKAAMINEN, KOON MUUTTAMINEN JA TALLENTAMINEN PAINTISSA

LibreOffice Writer perusteita

TIETOKONEEN ASETUKSILLA PARANNAT KÄYTETTÄVYYTTÄ

Flash ActionScript osa 4

OHJE -LIPPUKUNTASIVUN MUOKKAAMISEEN

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

Java-kielen perusteet

Harjoitus 2: Oppijan aktivointi ( )

TAMK Ohjelmistotekniikka G Graafisten käyttöliittymien ohjelmointi Herkko Noponen Osmo Someroja. Harjoitustehtävä 2: Karttasovellus Kartta

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

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

Object Framework - One. OF-1 is a high-productive Multi-UI OpenEdge data driven development framework. Veli-Matti Korhonen

LIITE 1 1. Tehtävänä on mallintaa kitara ohjeiden mukaan käyttäen Edit Poly-tekniikkaa.

Visma Fivaldi -käsikirja Tehtävienhallinta- ohje käyttäjälle

JUnit ja EasyMock (TilaustenKäsittely)

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

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

OpeOodi Opiskelijalistojen tulostaminen, opiskelijoiden hallinta ja sähköpostin lähettäminen

Transkriptio:

Tavoite: Osio 4: Graafinen käyttöliittymä 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 Markku Kuitunen 1

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ä Markku Kuitunen 2

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 Markku Kuitunen 3

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 Markku Kuitunen 4

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 Markku Kuitunen 5

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 Markku Kuitunen 6

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 Markku Kuitunen 7

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 Markku Kuitunen 8

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

: 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 Markku Kuitunen 10

: Osio 4: Graafinen käyttöliittymä 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 Tutkitaan komponentteja: http://java.sun.com/docs/books/tutorial/uiswing/components/components.html Markku Kuitunen 11

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

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) Markku Kuitunen 13

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

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.) Markku Kuitunen 15

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) Markku Kuitunen 16

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 Markku Kuitunen 17

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. Markku Kuitunen 18

JFrame-ikkunan luominen 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); } } Markku Kuitunen 19

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 JScrollPane voi sisältää myös vieritinpalkit JTabbedPane sisältää myös välilehdet Tällä opintojaksolla käsittelemme ainoastaan JPanelcontaineria Markku Kuitunen 20

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")); Markku Kuitunen 21

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ä Markku Kuitunen 22

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 Markku Kuitunen 23

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

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 Markku Kuitunen 25

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

Graafinen käyttöliittymä asettelumallit FlowLayout virta: komponentit asetellaan riviltä toiselle Nimi Aku Ankka Email aku.ankka@ankkis.kvaak Puhno +12345678 Asetukset: - CENTER -LEFT - RIGHT Markku Kuitunen 27

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 Markku Kuitunen 28

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

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 ); Markku Kuitunen 30

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

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) Markku Kuitunen 32

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) ); Markku Kuitunen 33

Graafinen käyttöliittymä asettelumallit GridLayout : Taulukko Nimi Email Aku Ankka aku.ankka@ankkis.kvaak Puhno +12345678 Ylläoleva on hahmottelumalli, EI näytöllä näkyvä käyttöliittymä Markku Kuitunen 34

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ä Markku Kuitunen 35

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 Markku Kuitunen 36

Graafinen käyttöliittymä asettelumalleja Esimerkit Sun:Swing Tutorial CardLayout + JTabbedPane Markku Kuitunen 37

Graafinen käyttöliittymä asettelumalleja ja lisäksi omat asettelumallit: Markku Kuitunen 38

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 Markku Kuitunen 39

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

http://www.beginner-java-tutorial.com/java-swing-tutorial.html java.sun.com/docs/books/tutorial/uiswing/learn/index.html Markku Kuitunen 41