1   package kanta;
2   import javax.swing.SwingConstants;
3   
4   import fi.jyu.mit.ohj2.Mjonot;
5   
6   /**
7    * Kenttä kokonaislukujen tallentamiseksi
8    * @author vesal
9    * @version 31.3.2008
10   *
11   */
12  public class IntKentta extends PerusKentta  {
13      private int arvo;
14  
15      /**
16       * Alustetaan kenttä kysymyksellä.
17       * @param kysymys joka näytetään kenttää kysyttäessä.
18       */
19      public IntKentta(String kysymys) { super(kysymys); }
20  
21      /**
22       * @return kentän arvo kokonaislukuna
23       */
24      public int getValue() { return arvo; }
25  
26      /**
27       * Asetetaan kentän arvo kokonaislukuna
28       * @param value asetettava kokonaislukuarvo
29       */
30      public void setValue(int value) { arvo = value; }
31  
32      /** 
33       * @return Kentän arvo merkkijonona
34       * @see kanta.PerusKentta#toString()
35       */
36      @Override
37      public String toString() { 
38          return ""+arvo; 
39      }
40  
41  
42  
43      /**
44       * Asetetaan kentän arvo merkkijonosta.  Jos jono 
45       * kunnollinen, palautetaan null.  Jos jono ei
46       * kunnollinen int-syöte, palautetaan virheilmoitus ja
47       * kentän alkuperäinen arvo jää voimaan.
48       * @param jono kentään asetettava arvo mekrkijonona
49       * @return null jos hyvä arvo, muuten virhe.  
50       * @see kanta.PerusKentta#aseta(java.lang.String)
51       * 
52       * @example
53       * <pre name="test">
54       * IntKentta kentta = new IntKentta("määrä");
55       * kentta.aseta("12") === null; kentta.getValue() === 12;
56       * kentta.aseta("k") === "Ei kokonaisluku (k)"; kentta.getValue() === 12;
57       * </pre>
58       */
59      @Override
60      public String aseta(String jono) {
61          StringBuffer sb = new StringBuffer(jono);
62          try {
63              this.arvo = Mjonot.erotaEx(sb,' ',0);
64              return null;
65          }
66          catch (NumberFormatException ex) {
67              return "Ei kokonaisluku (" + jono + ")";
68          }
69      }
70  
71      /**
72       * Palauttaa kentän tiedot veratiltavana merkkijonona
73       * @return vertailtava merkkijono kentästä
74       * @example
75       * <pre name="test">
76       * IntKentta kentta = new IntKentta("määrä");
77       * kentta.aseta("12");  kentta.getAvain() === "        12";
78       * kentta.aseta("1");   kentta.getAvain() === "         1";
79       * kentta.aseta("999"); kentta.getAvain() === "       999";
80       *   
81       * </pre>
82       */
83      @Override
84      public String getAvain() { 
85          return Mjonot.fmt(arvo, 10); 
86      }
87  
88      /**
89       * @return syväkopio oliosta
90       * @example
91       * <pre name="test">
92       *   #THROWS CloneNotSupportedException
93       *   IntKentta kentta = new IntKentta("määrä");
94       *   kentta.aseta("12");
95       *   IntKentta klooni = (IntKentta)kentta.clone();
96       *   kentta.getValue() === klooni.getValue();
97       *   kentta.aseta("13");
98       *   kentta.getValue() === 13;
99       *   klooni.getValue() === 12;
100      * </pre>
101      */
102     @Override
103     public Kentta clone() throws CloneNotSupportedException {
104         return super.clone();
105     }
106 
107     /**
108      * @return vaakasuuntainen sijainti kentälle
109      */
110     @Override
111     public int getSijainti() {
112         return SwingConstants.RIGHT;        
113     }
114 }
115