Praktikumitöö:graafiline rakendus: erinevus redaktsioonide vahel

Allikas: Lambda
Mine navigeerimisribale Mine otsikasti
25. rida: 25. rida:
== Kuidas graafik võiks välja näha ==
== Kuidas graafik võiks välja näha ==


Iga graafik peaks olema joon, soovitavalt iga joon eri värvi. Joon pn pidev, vasakust äärest paremale.
Iga graafik peaks olema joon, soovitavalt iga joon eri värvi. Joon on pidev, vasakust äärest paremale. Põhivaluuta võiks olla alati sama värvi (sinine, punane vms) ja võrdlusvaluutade graafikutest veidi paksema joonega või teisiti visuaalselt eristuv.


Kindlasti tee koordinaatide rehkendus nii, et jooned mahuks
Kindlasti tee koordinaatide rehkendus nii, et jooned mahuks

Redaktsioon: 1. november 2007, kell 20:01

Alltoodud ülesande üksikuid nüansse täiendatakse (kuid olemasolevaid detaile ei muudeta!) novembri esimese nädala jooksul.

Taustaks võid vaadata veidi sarnast ülesannet eelmisest aastast: Praktikumitöö:võrgurakendus

Ülesandeks on teha käsurealt käivitatav rakendus, mis esitab valuutakursside muutumise graafikuid. Valuutakursse tuleb lugeda Eesti panga lehelt, täpselt nagu praktikumis kaks: Praktikumitöö: Raamatute hinnavaatlus. Vahe kursside lugemisel on selles, et tuleb lugeda kursse mitte ainult ühe, vaid mitme päeva kohta. Graafikuid tuleb esitada mitmes variandis, vastavalt kasutaja eelistustele, info siin allpool.


Kasutajaliides

Kasutajaliides peab koosnema vähemalt järgmistest komponentidest:

  • Üleval kuupäeva sisestuspaneel, kus on:
    • sisestusväli alguskuupäeva ja lõpukuupäeva jaoks. Vaikimisi peaks seal olema väärtused viimase kuu jaoks (kuni eilse päevani). Kasutaja saab sinna ise kirjutada mõned teised kuupäevad.
  • All nupu/valikupaneel, klus kuvatakse:
    • nupp "Näita"
    • nupp "Katkesta"
    • valikuboks kuvamise stiiliga (absoluutväärtused või miinimum-maksimum piirides)
    • valikuboks baasvaluutaga (vaikimisi EEK): selle suhtes näidatakse teiste valuutade kursse.
    • valikuboks põhivaluuta ehk kuvatava valuutaga (vaikimisi USD): see on valuuta, mille graafikut kuvatakse (visuaalselt järgmistest eristuv).
    • valikuboks mitme valikuga, kus on võimalik valida valuutasid võrdluseks, vaikimisi on valitud USD, saab valida korraga mitu. Need graafikud pannakse siis põhivaluuta graafiku peale, alguspunktid ühtivad.
  • joonistamispaneel, kuhu kuvatakse graafikud.
  • Päris all "status bar" ehk info lugemise ülevaate paneel (kitsas riba!), kuhu kuvatakse info selle kohta, mitu päeva on loetud, kas lugemise käigus tuli vigu (kui tuli)

Kuidas graafik võiks välja näha

Iga graafik peaks olema joon, soovitavalt iga joon eri värvi. Joon on pidev, vasakust äärest paremale. Põhivaluuta võiks olla alati sama värvi (sinine, punane vms) ja võrdlusvaluutade graafikutest veidi paksema joonega või teisiti visuaalselt eristuv.

Kindlasti tee koordinaatide rehkendus nii, et jooned mahuks ekraanile ära ja ei jääks liiga väikeseks (ideaalis jookseks maks punkt joonistamisruumi ääreni).

Graafikule tee alla kuupäevajoon ja kuva sellele vasakule algus ja paremale lõpukuupäev. Vasakule tee kursi (suhte) joon ja kuva sellele vähemalt ülemise ääre väärtus ja alla alumise ääre väärtus, vahele keskmine. NB! Siin antakse töö käigus täpsustavaid nüansse.

Soovitusi

Alustamiseks

Alustamiseks võid kasutada seda näiterakendust, mida loengus oleme arendanud: guiexample.java.

NB! guiexample.java kasutamise korral on mõttekas panna buttonpanel akna alläärde (SOUTH), muidu peab hakkama lahendama küsimust comboboxi kuvamisest Canvas'e peale.

Mõttekas on lugeda läbi ka Ecki õpiku GUI-komponentide peatükk http://math.hws.edu/javanotes/c7/s3.html ja selle jätk http://math.hws.edu/javanotes/c7/s4.html.

Põhjaliku comboboxide kasutusjuhendi leiad siit: http://java.sun.com/docs/books/tutorial/uiswing/components/combobox.html Muuhulgas soovitab juhend sellist struktuuri:

public class ComboBoxDemo ... implements ActionListener {
    . . .
        petList.addActionListener(this) {
    . . .
    public void actionPerformed(ActionEvent e) {
        JComboBox cb = (JComboBox)e.getSource();
        String petName = (String)cb.getSelectedItem();
        updateLabel(petName);
    }
    . . .
}

kus ComboBoxDemo rolli sobiks meie juhul guiexampleFrame klass, mille sees olev keeruline nupu külge pandav addActionListener

  button.addActionListener(new ActionListener() { ....
  });

tuleks asendada lihtsamaga:

  button.addActionListener(this);

Samuti soovitan teha guiexampleFrame ümber nii, et comboboxid oleks guiexampleFrame klassis (kus on ka äsjakirjeldatud handler nupule) klassi jaoks globaalsed muutujad. Hoiatus äsjatoodud ComboBoxDemo jaoks: see näide eeldab, et ActionEvent e tuleb comboboxi muutmisest, meie juhul tuleb ta aga hoopis nupust. Seega (JComboBox)e.getSource() ei ole meie jaoks mõttekas, pigem tuleb lihtsalt lugeda comboboxide kui guiexampleFrame jaoks globaalsete muutujate väärtust.

Lähiajal tuleb siis veidi lisa-näpunäiteid, vastavalt loengus toimunud etteprogrammeerimisele.

Kasulikke tutoriale (lisaks Ecki raamatule)