1   package kanta;
2   import javax.swing.SwingConstants;
3   
4   import fi.jyu.mit.ohj2.Mjonot;
5   
6   /**
7    * Kenttä reaalilukuja varten.
8    * @author vesal
9    * @version 31.3.3008
10   *
11   */
12  public class DoubleKentta extends PerusKentta {
13      private double arvo;
14  
15      /**
16       * Alustetaan kenttä kysymyksellä
17       * @param kysymys joka esitetään kentän kohdalla
18       */
19      public DoubleKentta(String kysymys) { super(kysymys,new DesimaaliTarkistaja()); }
20  
21      /**
22       * @return Kentän arvo reaalilukuna
23       */
24      public double getValue() { return arvo; }
25  
26      /**
27       * Asetetaan kentän arvo reaalilukuna
28       * @param value kentän uusi arvo reaalilukuna
29       */
30      public void setValue(double value) { arvo = value; }
31  
32      /**
33       * @return kentän arvo merkkijonona
34       * @see kanta.PerusKentta#toString()
35       */
36      @Override
37      public String toString() { return ""+arvo; }
38  
39  
40      /**
41       * @param jono jono jaoka asetetaan.  Vääristä jonoista
42       * arvoksi jää muuttumatta
43       * @see kanta.PerusKentta#aseta(java.lang.String)
44       * @example
45       * <pre name="test">
46       * DoubleKentta kentta = new DoubleKentta("summa");
47       * kentta.aseta("kissa") === "Ei desimaaliluku";  kentta.getValue() ~~~ 0.0; 
48       * kentta.aseta("12.7")  === null;  kentta.getValue() ~~~ 12.7; 
49       * kentta.aseta("32k7")  === "Ei desimaaliluku";  kentta.getValue() ~~~ 12.7; 
50       * </pre>
51       */
52      @Override
53      public String aseta(String jono) {
54          String virhe = null;
55          if ( tarkistaja != null ) virhe = tarkistaja.tarkista(jono);
56          if ( virhe != null ) return virhe;
57          this.arvo = Mjonot.erotaDouble(jono,0.0);
58          return null;
59      }
60  
61      /**
62       * Palauttaa kentän tiedot veratiltavana merkkijonona
63       * @return vertailtava merkkijono kentästä
64       * @example
65       * <pre name="test">
66       * DoubleKentta kentta = new DoubleKentta("määrä");
67       *                                         //  123456789012345678
68       * kentta.aseta("12");  kentta.getAvain() === "         12.000000";
69       * kentta.aseta("1");   kentta.getAvain() === "          1.000000";
70       * kentta.aseta("999"); kentta.getAvain() === "        999.000000";
71       *   
72       * </pre>
73       */
74      @Override
75      public String getAvain() { 
76          return Mjonot.fmt(arvo, 18,6); 
77      }
78  
79      /**
80       * @return vaakasuuntainen sijainti kentälle
81       */
82      @Override
83      public int getSijainti() {
84          return SwingConstants.RIGHT;        
85      }
86  }
87