Teskstialue (JTextArea) ja Scrollaus (JScrollPane)

Samankaltaiset tiedostot
GRAAFISEN KÄYTTÖLIITTYMÄN OHJELMOINTI JAVA SWING

Olio-ohjelmointi Käyttöliittymä

JAVA-OHJELMOINTI 3 op A274615

Graafinen käyttöliittymä, osa 2

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

Java ja grafiikka. Ville Sundberg

Osio 4: Graafinen käyttöliittymä

Osio 4: Graafinen käyttöliittymä

Osio 4: Graafinen käyttöliittymä

Graafinen käyttöliittymä, osa 3

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

Osio 4: Graafinen käyttöliittymä

Mikä yhteyssuhde on?

Rajapinta (interface)

Ohjelmointi 2 / 2010 Välikoe / 26.3

Metodien tekeminen Javalla

Listarakenne (ArrayList-luokka)

Tietorakenteet. JAVA-OHJELMOINTI Osa 5: Tietorakenteita. Sisällys. Merkkijonot (String) Luokka String. Metodeja (public)

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

Luokan sisällä on lista

YHTEYSSUHDE (assosiation)

Java Swing. Juha Järvensivu 2007

Ohjelmoinnin jatkokurssi, kurssikoe

Kääreluokat (oppikirjan luku 9.4) (Wrapper-classes)

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

Java Swing. Juha Järvensivu 2008

Javan GUI Scratchaajalle

Java-kielen perusteita

Java-kielen perusteet

Olio-ohjelmointi Javalla

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2007

Java-kielen perusteet

Ikkunointijärjestelmät

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

List-luokan soveltamista. Listaan lisääminen Listan läpikäynti Listasta etsiminen Listan sisällön muuttaminen Listasta poistaminen Listan kopioiminen

Osio 4: Graafinen käyttöliittymä

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

A) on käytännöllinen ohjelmointitekniikka. = laajennetaan aikaisemmin tehtyjä luokkia (uudelleenkäytettävyys)

Osio 4: Graafinen käyttöliittymä

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Ohjelmointitaito (ict1td002, 12 op) Kevät Java-ohjelmoinnin alkeita. Tietokoneohjelma. Raine Kauppinen

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

Graafisen käyttöliittymän ohjelmointi

public static void main (String [] args)

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

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

Tehtävä 1. Tehtävä 2. Arvosteluperusteet Koherentti selitys Koherentti esimerkki

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

Luokan muodostimet (Constructors)

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

20. Javan omat luokat 20.1

Sisällys. 20. Javan omat luokat. Java API. Pakkaukset. java\lang

Tietorakenteet, laskuharjoitus 7,

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

Informaatioteknologian laitos Olio-ohjelmoinnin perusteet / Salo

JAVA-PERUSTEET. JAVA-OHJELMOINTI 3op A JAVAN PERUSTEET LYHYT KERTAUS JAVAN OMINAISUUKSISTA JAVAN OMINAISUUKSIA. Java vs. C++?

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

1. Omat operaatiot 1.1

Lista luokan sisällä

Yksikkötestaus. Kattava testaus. Moduulitestaus. Ohjelman testaus. yksikkotestaus/ Seija Lahtinen

Java kahdessa tunnissa. Jyry Suvilehto

9. Periytyminen Javassa 9.1

11. Javan valintarakenteet 11.1

Javan GUI Scratchaajalle

Luokat ja oliot. Ville Sundberg

Ohjelmoinnin peruskurssien laaja oppimäärä

18. Abstraktit tietotyypit 18.1

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Taulukoiden käsittely Javalla

Tapahtumapohjainen ohjelmointi. Juha Järvensivu 2008

Javan perusteet. Ohjelman tehtävät: tietojen syöttö, lukeminen prosessointi, halutun informaation tulostaminen tulostus tiedon varastointi

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

TIETORAKENTEET JA ALGORITMIT

Sisällys. 18. Abstraktit tietotyypit. Johdanto. Johdanto

17. Javan omat luokat 17.1

Ohjelmoinnin perusteet, kurssikoe

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

16. Javan omat luokat 16.1

Rinnakkaisohjelmointi kurssi. Opintopiiri työskentelyn raportti

7. Näytölle tulostaminen 7.1

Javan perusteita. Janne Käki

Tietokantarakenteet, k2011 Niemistö, Jesse; m Viitanen, Lauri; Drinkkitietokanta

Harjoitustyö (TKO_2023)

9. Periytyminen Javassa 9.1

Alkuehdot. Motivointi (1/2) Ohjelmointi II, kevät 2004 Kuopion yliopisto. Motivointi (2/2) (C) Mauno Rönkkö. Mitä tekee kutsupieninalkio(t, 10)?

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

Java-API, rajapinnat, poikkeukset, UML,...

Tässä tehtävässä käsittelet metodeja, listoja sekä alkulukuja (englanniksi prime ).

Javan GUI Scratchaajalle

1 Tehtävän kuvaus ja analysointi

Java-kielen perusteet

Taulukot. Taulukon määrittely ja käyttö. Taulukko metodin parametrina. Taulukon sisällön kopiointi toiseen taulukkoon. Taulukon lajittelu

7. Oliot ja viitteet 7.1

KOHDELUOKAN MÄÄRITTELY

// Tulostetaan double-tyyppiseen muuttujaan "hinta" tallennettu // kertalipun hinta ja vaihdetaan riviä. System.out.printf("%.1f euros.

Olio-ohjelmointi Suunnittelumallit Adapter ja Composite. 1. Adapter

Eclipse & WindowBuilder

Ohjelmointi 1 / 2009 syksy Tentti / 18.12

Sisällys. Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2

Rinnakkaisohjelmointi, Syksy 2006

Transkriptio:

HELIA OHJELMOINTI ict1tn006 1 (32) Viikon 14 materiaalia Teskstialue (JTextArea) ja Scrollaus (JScrollPane) JTextArea on tekstialue, jossa on useita rivejä Muodostimia: public JTextArea(int rows, int columns) public JTextArea(String text) public JTextArea(String text, int rows, int columns) Metodeja: public void settext(string stg) metodin avulla viedään alueelle uusi sisältö esim. tateksti2.settext("i rivi\nii rivi\niii rivi\n"); alueen uusi sisältö: I rivi II rivi III rivi esim. tateksti2.settext(""); koko alue tyhjenee

HELIA OHJELMOINTI ict1tn006 2 (32) public void append (String str) metodin avulla viedään alueen loppuun uutta tekstiä esim. tateksti1.append ("Lisää tekstiä "); tateksti1.append ("append-metodilla. "); alueen loppuun tulee teksti: Lisää teksti append-metodille public void setlinewrap (boolean paalla) tehdäänkö rivinvaihdot itse vai käyttäjä oletus false, eli käyttäjä tekee itse rivinvaihdot true, komponentti tekee rivinvaihdot itse

HELIA OHJELMOINTI ict1tn006 3 (32) JScrollPane tekee rollauksen mahdolliseksi Muodostimia: public JScrollPane(Component view) - parametrina annetaan komponentti, johon rollaus tulee - esim. private JTextArea tateksti1 = new JTextArea ("1. rivi\n2. rivi\n", 5, 15); private JScrollPane scrollaus1 = new JScrollPane (tateksti1); public JScrollPane(Component view,int vpolicy, int hpolicy) - parametrina annetaan komponentin lisäksi vertikaali- ja horisontaalipolitiikka: o HORIZONTAL_SCROLLBAR_AS_NEEDED o HORIZONTAL_SCROLLBAR_NEVER o HORIZONTAL_ SCROLLBAR_ALWAYS o VERTICAL_SCROLLBAR_AS_NEEDED o VERTICAL_SCROLLBAR_NEVER o VERTICAL_SCROLLBAR_ALWAYS - esim private JScrollPane scrollaus1 = new JScrollPane( tateksti1, JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED, JScrollPane.HORIZONTAL_SCROLLBAR_ALWAYS); public JScrollPane(int vsbpolicy, int hsbpolicy) - parametrina annetaan vertikaali- ja horisontaalipolitiikka

HELIA OHJELMOINTI ict1tn006 4 (32) Metodeita: void sethorizontalscrollbarpolicy(int policy) - lisää horisontaalipolittiikan void setverticalscrollbarpolicy(int policy - lisää vertikaalipolitiikan

HELIA OHJELMOINTI ict1tn006 5 (32) public class FrTextArea extends JFrame public FrTextArea() setsize(400,200); setlocation(100,100); settitle("testialueet"); asettelekomponentit(); setdefaultcloseoperation(jframe.exit_on_close); private void asettelekomponentit() scrollaus1.sethorizontalscrollbarpolicy (JScrollPane.HORIZONTAL_SCROLLBAR_NEVER); scrollaus1.setverticalscrollbarpolicy (JScrollPane.VERTICAL_SCROLLBAR_ALWAYS); // automaattinen rivinvaihto päälle tateksti1.setlinewrap(true); setlayout (new FlowLayout()); add (scrollaus1); add (scrollaus2); add(tateksti3); tateksti1.append ("Lisää tekstiä "); tateksti1.append ("append-metodilla. "); tateksti1.append ("Rivinvaihto tapahtuu automaattisesti."); tateksti2.append("4. rivi\n 5. rivi\n Sitten kovasti + tekstiä ilman rivinvaihtoja"); // käyttöliittymäkomponentit private JTextArea tateksti1 = new JTextArea ("1. rivi\n2. rivi\n", 5, 15); private JTextArea tateksti2 = new JTextArea ("1. rivi\n2. rivi\n3. rivi\n", 5, 15); private JTextArea tateksti3 = new JTextArea(); // määritellään rollaukset, joihin liitetään tekstialueet private JScrollPane scrollaus1 = new JScrollPane(taTeksti1); private JScrollPane scrollaus2 = new JScrollPane(taTeksti2);

HELIA OHJELMOINTI ict1tn006 6 (32) tulostuu

HELIA OHJELMOINTI ict1tn006 7 (32) Luettelo (JList) Luettelokomponentilla voidaan esittää ja selata luetteloita. JList-komponentin oletusmääreisiin kuuluu monivalinta, eli käyttäjä voi valita kerrallaan useita listan rivejä. JList-komponenttiin ei kuuluu automaattisesti vierityspalkit, mutta ne voidaan sinne lisätä JList-luokka periytyy SWING:n JComponent-luokasta. Object Component Container JList JComponent ListModel getmodel() int getselectedindex () int [] getselectedindecies () Object getselectedvalue() Object[] getselectedvalues() void setmodel(listmodel) void setselectedindex(int i) void setselectedindecies(int [] i) void setselectionmodel (ListSelectionModel model) requestfocus setbackground setborder setenabled setfont setvisible

HELIA OHJELMOINTI ict1tn006 8 (32) Muodostimia: JList () muodostin, tyhjä, lukukelponen (read-only) lista JList (ListModel model) muodostin, listaan tulostuu parametrin sisältö JList (Object [] taulu) muodostin, listaan tulostuu parametrin sisältö JList (Vector<?> data) muodostin, listaan tulostuu parametrin sisältö Metodeita: ListModel getmodel() palauttaa arvonaan ListModel-olion int getselectedindex() palauttaa arvonaan valitun rivin indeksin int[] getselectedindecies()palauttaa arvonaan valittujen rivin indeksit Object getselectedvalue() palauttaa arvonaan valitun olion Object[] getselectedvalues()palauttaa arvonaan valitut oliot void setmodel(listmodel) vie listan sisällöksi ListModel void setselectedindex(int i) valitsee listasta rivin i void setselectedindecies(int [] i) valitsee listasta rivit i[] void setselectionmodel(listselectionmodel model) yksivalinta/monivalinta

HELIA OHJELMOINTI ict1tn006 9 (32) Kun käytetään ns. dynaamista listaa (joka muuttuu ohjelman suorituksen aikana) JList-olio käyttää DefaultListModel-oliota Oliot luodaan seuraavasti: private DefaultLitsModel model=new DefaultListModel(); private JList jlkielet = new JList(model); Tai oliot voidaan luoda seuraavasti: private DefaultLitsModel model=new DefaultListModel(); private JList lskielet = new JList(); ja myöhemmin asettaa sisältö: lskielet.setmodel(model); DefaultListModel-olion metodeita: void add(int ind, Object ob) void addelement(object ob) void clear() Object get(int index) boolean removeelement (Object ob) void removeelementat(int ind) Lisää parametrin ob listan kohtaan index Lisää parametrin ob listan loppuun Tyhjentää listan. Palauttaa arvonaan olion kohdassa index Poistaa listasta olion ob. Poistaa olion kohdasta index

HELIA OHJELMOINTI ict1tn006 10 (32) Esim. Luettelo esimerkki public class FrJLista extends JFrame public FrJLista() settitle("jlist esimerkki"); setsize(250, 200); setlocation(100, 100); asettelekomponentit(); setdefaultcloseoperation(jframe.exit_on_close); public void asettelekomponentit() Container sisalto = this.getcontentpane(); sisalto.setlayout(null); // vain yhden rivin valinta lslista.setselectionmode (ListSelectionModel.SINGLE_SELECTION); sisalto.add(lbrivi); sisalto.add(tfrivi); sisalto.add(lslista); sisalto.add(btlisaa); sisalto.add(btpoista); // x, y, leveys, korkeus lbrivi.setbounds(10, 10, 70, 25); tfrivi.setbounds(85, 10, 150, 25); lslista.setbounds(85, 40, 150, 70); btlisaa.setbounds(85, 120, 70, 25); btpoista.setbounds(160, 120, 70, 25);

HELIA OHJELMOINTI ict1tn006 11 (32) // tapahtumakuuntelijat painikkeisiin btlisaa.addactionlistener(new AlsLisaa()); btpoista.addactionlistener(new AlsPoista()); // lisää listaan ns. hiirikuuntelija lslista.addmouselistener(new MlsLista()); // laita painike Poista pois päältä btpoista.setenabled(false); private class AlsLisaa implements ActionListener public void actionperformed(actionevent e) String rivi = tfrivi.gettext(); if (rivi.trim().length() > 0) model.addelement(rivi.trim()); tfrivi.settext(""); private class AlsPoista implements ActionListener public void actionperformed(actionevent e) String rivi = (String) lslista.getselectedvalue(); if (rivi!= null) model.removeelement(rivi); btpoista.setenabled(false); // Kun käyttäjä valitsee JList-komonentista rivin, // tama aktivoituu, eli laitetaan POista-nappula päälle private class MlsLista extends MouseAdapter public void mouseclicked(mouseevent e) btpoista.setenabled(true); ;

HELIA OHJELMOINTI ict1tn006 12 (32) private JTextField tfrivi = new JTextField(20); private JLabel lbrivi = new JLabel("Kirjoita rivi"); private JButton btlisaa = new JButton("Lisaa"); private JButton btpoista = new JButton("Poista"); private DefaultListModel model = new DefaultListModel(); private JList lslista = new JList(model); public static void main(string[] s) FrJLista fr = new FrJLista(); fr.setvisible(true); II Esimerkki public class FrLuetteloEsimerkki extends JFrame public FrLuetteloEsimerkki() settitle ("Luetteloesimerkki"); setsize(250, 250); setlocation (100, 100); asettelekomponentit(); setdefaultcloseoperation(jframe.exit_on_close);

HELIA OHJELMOINTI ict1tn006 13 (32) private void asettelekomponentit() Container sisalto = this.getcontentpane(); sisalto.setlayout (null); // lisää listaan tulostuvat rivit // DefaultListModel-olioon model.addelement("assembler"); model.addelement("c++"); model.addelement("cobol"); model.addelement("java"); model.addelement("visual Basic"); lskielet.setselectionmode (ListSelectionModel.SINGLE_SELECTION); sisalto.add (lbkielet); sisalto. add (scrollaus); sisalto. add(btannapisteet); sisalto. add(lbpisteet); lbkielet.setbounds(20,10,150,25); scrollaus.setbounds(20,40,100,80); btannapisteet.setbounds(125,60,120,25); lbpisteet.setbounds(20,115,100,25); btannapisteet.addactionlistener (new AlsAnnaPisteet()); class AlsAnnaPisteet implements ActionListener public void actionperformed (ActionEvent e) String valittu = (String)lsKielet.getSelectedValue(); if (valittu.equals ("Java")) lbpisteet.settext ("Sait 10 pistettä "); else lbpisteet.settext ("Sait 3 pistettä ");

HELIA OHJELMOINTI ict1tn006 14 (32) // KÄYTTÖLIITTYMÄKOMPONENTIT private JLabel lbkielet = new JLabel ("Mikä on suosikkisi? "); private JLabel lbpisteet = new JLabel (" "); private JButton btannapisteet = new JButton ("Anna Pisteet"); // dynaaminen lista määritellään näin: private DefaultListModel model = new DefaultListModel(); private JList lskielet = new JList (model); //laitetaan listaaan vierityspalkit private JScrollPane scrollaus = new JScrollPane(lsKielet); public static void main(string[] args) FrLuetteloEsimerkki fr = new FrLuetteloEsimerkki(); fr.setvisible(true);

HELIA OHJELMOINTI ict1tn006 15 (32) Valintalista (JComboBox) Valintalistasta käyttäjä voi valita yhden vaihtoehdon. Valintalista vie tilaa näytöllä vain valitun vaihtoehdon verran. JComboBox-luokka periytyy SWING:n JComponent-luokasta. Object Component Container JComboBox JComponent void additem(object ob) Object getitemat(int i) int getselectedindex() Object getselecteditem() Object[] getselectedobjects() void removeallitems() void removeitem(object ob) void removeitemat(int i) void setselectedindex(int i) void setselecteditem(object ob) requestfocus setbackground setborder setenabled setfont setvisible

HELIA OHJELMOINTI ict1tn006 16 (32) Seuraavassa on joitakin keskeisiä JComboBox-luokan metodeja: Esimerkki JComboBox () muodostin, tyhjä valintalista JComboBox (Object [] taulu) muodostin, valintalista, johon tulostuu parametrin taulu void additem(object ob) lisää rivin (Object ob) valintalistan loppuun Object getitemat(int i) palauttaa listan rivin kohdassa i int getselectedindex() palauttaa valitun rivin indeksin Object getselecteditem() palauttaa valitun rivin Object[] getselectedobjects() palauttaa valitut rivit void removeallitems() poistaa listasta kaikki void removeitem(object ob) poistaa listasta rivin ob void removeitemat(int i) poistaa listasta rivin kohdasta i void setselectedindex(int i) valitsee rivin kohdassa i void setselecteditem(object ob)valitsee rivin (Object ob)

HELIA OHJELMOINTI ict1tn006 17 (32) public class FrValinta extends JFrame public FrValinta () settitle ("JComboBox-esimerkki") ; setsize (250, 150) ; setlocation (100, 100) ; asettelekomponentit () ; setdefaultcloseoperation(jframe.exit_on_close); private void asettelekomponentit () Container sisalto = this.getcontentpane(); sisalto.setlayout (new FlowLayout (FlowLayout.LEFT)) ; cmkielet.additem ("Assembler") ; cmkielet.additem ("Java") ; cmkielet.additem ("C++") ; sisalto.add (lbkielet) ; sisalto.add (cmkielet) ; sisalto.add (btannapisteet) ; sisalto.add (lbpisteet) ; btannapisteet.addactionlistener(new AlsAnnaPisteet ()) ; class AlsAnnaPisteet implements ActionListener public void actionperformed (ActionEvent e) String valittu = (String)cmKielet.getSelectedItem(); if (valittu.equals ("Java")) lbpisteet.settext ("Sait 10 pistettä") ; else if (valittu.equals ("C++")) lbpisteet.settext ("Sait 9 pistettä") ; else lbpisteet.settext ("Sait 3 pistettä") ;

HELIA OHJELMOINTI ict1tn006 18 (32) // KÄYTTÖLIITTYMÄKOMPONENTIT private JLabel lbkielet= new JLabel ("Mikä on suosikkisi?") ; private JLabel lbpisteet = new JLabel (" "); private JComboBox cmkielet = new JComboBox () ; private JButton btannapisteet = new JButton ("Anna pisteet" ) ; public static void main(string[] args) FrValinta fr = new FrValinta(); fr.setvisible(true);

HELIA OHJELMOINTI ict1tn006 19 (32) Valintaruutu, JRadioButton ja JCheckBox Valintaruudut toteutetaan joko JRadioButton tai JCheckBoxkomponenttien avulla. Valintaruutu JRadioButton voidaan toteuttaa siten, että vain yksi vaihtoehdoista on valittavissa. Tällöin käytetään ButtonGroupluokkaa. ButtonGroup-luokan metodeja: void clearselection() poista valinta ButtonModel getselection() palauttaa tiedon, mikä ryhmästä on valittu boolean isselected(buttonmodel bm) palauttaa tiedon, onko parametri valittu ButtonModel-rajapinnan metodeja: String getactioncommand() palauttaa oliolle asetetun ActionCommandin nimen

HELIA OHJELMOINTI ict1tn006 20 (32) JComponent requestfocus setbackground setborder setenabled setfont setvisible AbstractButton void additemlistener(itemlistener i) void setactioncommand(string com) String gettext() void settext(string st) boolean isselected() void setselected (Boolean b) JToggleButton JRadioButton JRadioButton() JRadioButton(String st) JRadioButton (String st, boolean sel) JCheckBox JChechBox() JCheckBox(String st) JCheckBox (String st, boolean sel)

HELIA OHJELMOINTI ict1tn006 21 (32) AbstractButton-luokan metodeja: void additemlistener(itemlistener i) asetetaan tapahtumakuuntelija void setactioncommand(string com) asetetaan oliolle ActionCommandin nimi String gettext() palauttaa olion tekstin void settext(string st) boolean isselected() viedään oliolle teksti onko olio valittu (true) vai ei (false) void setselected (boolean b) valitse olio JRadioButton-luokan muodostimia: JRadioButton() oletusmuodostin JRadioButton(String st) param.muodostin, jossa olio saa tekstin JRadioButton(String st, boolean sel) param.muodostin, jossa olio saa tekstin ja se valitaan JCheckBox-luokan muodostimia: JCheckBox() oletusmuodostin JCheckBox (String st) param.muodostin, jossa olio saa tekstin JCheckBox (String st, boolean sel) param.muodostin, jossa olio saa tekstin ja se valitaan

HELIA OHJELMOINTI ict1tn006 22 (32) esim. public class FrValinnat extends JFrame public FrValinnat() setsize(300,330); settitle("jcheckbox ja JRadioButton"); setlocation(100,100); setdefaultcloseoperation(jframe.exit_on_close); asettelekomponentit(); private void asettelekomponentit() Container sisalto = this.getcontentpane(); sisalto.setlayout(null); //lisää JRadioButtonit ButtonGroupiin bgsukupuoli.add(rbmies); bgsukupuoli.add(rbnainen);

HELIA OHJELMOINTI ict1tn006 23 (32) sisalto.add(lbnimi); sisalto.add(tfnimi); sisalto.add(lbsukupuoli); sisalto.add(rbmies); sisalto.add(rbnainen); sisalto.add(lbkielet); sisalto.add(cbruotsi); sisalto.add(cbsuomi); sisalto.add(cbmuu); sisalto.add(lbmika); sisalto.add(tfmika); sisalto.add(btyhteenveto); sisalto.add(btlopeta); // x,y, leveys, korkeus lbnimi.setbounds(20,20,100, 20); tfnimi.setbounds(130,20, 100,20); lbsukupuoli.setbounds(20,60, 100, 25); rbnainen.setbounds(130, 60,70,25); rbmies.setbounds(130, 90, 70, 25); lbkielet.setbounds(20, 120, 150,25); cbruotsi.setbounds(50, 150, 130, 25); cbsuomi.setbounds(50, 180, 130, 25); cbmuu.setbounds(50, 210, 70, 25); lbmika.setbounds(140,210, 50, 25); tfmika.setbounds(195, 210, 70, 25); btyhteenveto.setbounds(20, 250, 100, 25); btlopeta.setbounds(130, 250, 100, 25); // toistaiseksi näkymätön muu kieli lbmika.setvisible(false); tfmika.setvisible(false); // vie JRadioButtonien ActionCommand:lle nimet rbnainen.setactioncommand("nainen"); rbmies.setactioncommand("mies"); btyhteenveto.addactionlistener(new AlsYhteenveto()); btlopeta.addactionlistener(new AlsLopeta()); // kuuntelija JCheckBoxiin cbmuu.additemlistener(new IlsMuu());

HELIA OHJELMOINTI ict1tn006 24 (32) private class AlsYhteenveto implements ActionListener public void actionperformed(actionevent e) String teksti; String nimi; nimi=tfnimi.gettext().trim(); if (nimi.length()==0) JOptionPane.showMessageDialog (null, "Kirjoita nimi!", "Viesti", JOptionPane.INFORMATION_MESSAGE) ; else nimi = nimi.substring(0,1).touppercase() + nimi.substring(1).tolowercase(); teksti = "Nimesi: " + nimi; //kumman sukupuolen käyttäjä valitsi? ButtonModel sukupuoli; sukupuoli = bgsukupuoli.getselection(); teksti += ", " + sukupuoli.getactioncommand(); teksti += "\nkielitaitosi: "; // valitsiko käyttäjä JCheckBoxin cbruotsi? if (cbruotsi.isselected()) teksti += cbruotsi.gettext()+" ja "; // valitsiko käyttäjä JCheckBoxin cbsuomi? if (cbsuomi.isselected()) teksti += cbsuomi.gettext()+" ja "; // valitsiko käyttäjä JCheckBoxin cbmuu? if (cbmuu.isselected()) if (tfmika.gettext().trim().length() > 0) teksti += tfmika.gettext().trim(); else teksti += "?";

HELIA OHJELMOINTI ict1tn006 25 (32) else // otetaan viimeinen ja-sana pois tekstistä teksti = teksti.substring(0,teksti.length()-3); JOptionPane.showMessageDialog (null, teksti, "Viesti", JOptionPane.INFORMATION_MESSAGE); private class AlsLopeta implements ActionListener public void actionperformed(actionevent e) System.exit(0); // kun käyttäjä valitsee valintaruudun Muu // ==> tulevat näkyviin // JLabel lbmika ja JTextFiled tfmika private class IlsMuu implements ItemListener public void itemstatechanged(itemevent e) if (cbmuu.isselected())// onko cbmuu valittu? lbmika.setvisible(true); tfmika.setvisible(true); tfmika.settext(""); else // käyttäjä poisti cbmuu valinnan lbmika.setvisible(false); tfmika.setvisible(false);

HELIA OHJELMOINTI ict1tn006 26 (32) // käyttöliittymäkomponentit private JLabel lbnimi = new JLabel("Kirjoita nimi:"); private JTextField tfnimi = new JTextField(); private JLabel lbsukupuoli = new JLabel("Valitse sukupuoli:"); //Ryhmä private ButtonGroup bgsukupuoli = new ButtonGroup(); private JRadioButton rbmies = new JRadioButton("Mies"); private JRadioButton rbnainen = new JRadioButton("Nainen", true); private JLabel lbkielet = new JLabel("Valitse kielet, jotka taidat:"); private JCheckBox cbruotsi = new JCheckBox("ruotsi"); private JCheckBox cbsuomi = new JCheckBox("suomi"); private JCheckBox cbmuu = new JCheckBox("muu"); private JLabel lbmika = new JLabel("Mikä?"); private JTextField tfmika = new JTextField(); private JButton btyhteenveto = new JButton("Yhteenveto"); private JButton btlopeta = new JButton("Lopeta"); public static void main(string [] s) FrValinnat fr = new FrValinnat(); fr.setvisible(true);

HELIA OHJELMOINTI ict1tn006 27 (32) Valikko, JMenuBar, JMenu, JMenuItem Valikoiden avulla voidaan toteuttaa samat toimenpiteet kuin nappuloillakin (JButton). Valikoiden JMenuItem-olioihin voidaan liittää tapahtumakuuntelijoita (addactionlistener(actionlistener als)). JMenuBar JMenu separator JMenuItem

HELIA OHJELMOINTI ict1tn006 28 (32) JComponent requestfocus setbackground setborder setenabled setfont setvisible AbstractButton void additemlistener(itemlistener i) void setactioncommand(string com) String gettext() void settext(string st) boolean isselected() void setselected (Boolean b) void setmnemonic (int mnemonic) JMenuBar JMenuBar() JMenu add(jmenu mn) JMenuItem JMenuItem(String tx) JMenuItem(String tx, int mnemonic) JMenu JMenu (String tx) JMenuItem add(jmenuitem mi) void addseparator()

HELIA OHJELMOINTI ict1tn006 29 (32) JMenuBar-luokan muodostin ja metodeita: JMenuBar() JMenu add(jmenu mn) oletusmuodostin lisää JMenuBar-olioon JMenu-olion JMenu-luokan muodostimia ja metodeita: JMenu (Stringt tx) JMenuItem add(jmenuitem mi) void addseparator() param.muodostin, vie tekstin Jmenu-olioon lisää JMenuItem-olion JMenu-olioon lisää JMenu-olioon ns.separaattorin JMenuItem-luokan muodostimia: JMenuItem(String tx) param.muodostin, vie tekstin Jmenu-olioon JMenuItem(String tx, int mnemonic) param.muodostin, vie tekstin ja kirjaimen JMenuItem-olioon. Kirjaimen avulla JMenuItem voidaan valita.

HELIA OHJELMOINTI ict1tn006 30 (32) Esimerkki public class FrValikko extends JFrame public FrValikko() settitle ("ValikkoRivi"); setsize(300, 200); setlocation(100,100); asettelekomponentit(); setdefaultcloseoperation(jframe.exit_on_close);

HELIA OHJELMOINTI ict1tn006 31 (32) private void asettelekomponentit() // JFrame-olion metodi, vie JMenuBar ikkunaan setjmenubar (mbvalikko); // vie JMenuBariin JMenut mbvalikko.add (mntosite); mbvalikko.add(mnohje); // vie JMenuun mntosite JMenuItemit ja separator mntosite.add(miuusi); mntosite.add(miavaa); mntosite.addseparator(); mntosite.add(milopeta); // vie JMenuun mnohje JMenuItemit mnohje.add(mietsi); mnohje.add(mitietoja); // menu ja menuitem alkukirjaimen alleviivaus mntosite.setmnemonic('t'); mnohje.setmnemonic('o'); miuusi.setmnemonic('u'); miavaa.setmnemonic('a'); milopeta.setmnemonic('l'); milopeta.addactionlistener (new AlsLopeta()); miuusi.addactionlistener (new AlsUusi()); miavaa.addactionlistener( new AlsAvaa()); class AlsUusi implements ActionListener public void actionperformed (ActionEvent e) JOptionPane.showMessageDialog ( null, "Valitsit Uusi valinnan", "ILMOITUS", JOptionPane.INFORMATION_MESSAGE);

HELIA OHJELMOINTI ict1tn006 32 (32) class AlsAvaa implements ActionListener public void actionperformed (ActionEvent e) JOptionPane.showMessageDialog ( null, "Valitsit Avaa valinnan", "ILMOITUS", JOptionPane.INFORMATION_MESSAGE); class AlsLopeta implements ActionListener public void actionperformed (ActionEvent e) System.exit(0); // kayttoliittymakomponentit private JMenuBar mbvalikko = new JMenuBar(); private JMenu mntosite = new JMenu ("Tosite"); private JMenu mnohje = new JMenu ("Ohje"); private JMenuItem miuusi = new JMenuItem ("Uusi"); private JMenuItem miavaa = new JMenuItem ("Avaa.."); private JMenuItem milopeta = new JMenuItem ("Lopeta"); private JMenuItem mietsi = new JMenuItem ("Etsi ohje aiheesta",'e'); private JMenuItem mitietoja = new JMenuItem ("Tietoja sovelluksesta",'s'); public static void main (String [] s) FrValikko olio = new FrValikko(); olio.setvisible(true);