home *** CD-ROM | disk | FTP | other *** search
/ Java 1.2 How-To / JavaHowTo.iso / javafile / ch06 / Converter.java < prev    next >
Encoding:
Java Source  |  1998-12-14  |  3.4 KB  |  139 lines

  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.applet.Applet;
  4.  
  5. /*
  6.  * the applet class
  7.  */
  8. public class Converter extends Applet {
  9.  
  10. /*
  11.  * the "from" unit index
  12.  */
  13. int fromindex = 0;
  14.  
  15. /*
  16.  * the "to" unit index
  17.  */
  18. int toindex = 0;
  19.  
  20. /*
  21.  * a place to print the conversion factor
  22.  */
  23. TextField textfield = new TextField(12);
  24.  
  25. /*
  26.  * where the choice lists are displayed
  27.  */
  28. Panel listpanel = new Panel();
  29.  
  30. /*
  31.  * where the text field is displayed
  32.  */
  33. Panel textpanel = new Panel();
  34. Choice unit1 = new Choice();
  35. Choice unit2 = new Choice();
  36.  
  37. /*
  38.  * an array of conversion factors
  39.  */
  40. String values[][] = {
  41.        {"1.000", "1.000 E-2", "1.000 E-5", "3.397 E-1", "3.937 E-2", "6.214 E-6"},
  42.        {"1.000 E+2", "1.000", "1.000 E-3", "39.37","3.28", "6.214 E-4"},
  43.        {"1.000 E+5", "1.000 E+3", "1.000", "3.937 E+4","3.281 E+3", "6.214 E-1"},
  44.        {"2.54", "0.0254", "2.54 E-5", "1.000", "12.0","1.578 E-5"},
  45.        {"30.48", "0.3048", "3.048 E-4", "12.0", "1.000","1.894 E-4"},
  46.        {"1.609 E+5", "1.609 E+3", "1609", "6.336 E+4","5280", "1.000"}
  47. };
  48.  
  49. /*
  50.  * called when the applet is loaded
  51.  * create the user interface
  52.  */
  53. public void init() {
  54.  
  55.        textfield.setText(values[fromindex][toindex]);
  56.        textfield.setEditable (false);
  57.  
  58.        this.setLayout(new BorderLayout());
  59.        listpanel.setLayout(new FlowLayout());
  60.        add("North", listpanel);
  61.        add("South", textpanel);
  62.  
  63.        Label fromlabel = new Label ("To Convert From  ",1);
  64.        listpanel.add(fromlabel);
  65.        unit1.addItem("Centimeters");
  66.         unit1.addItem("Meters");
  67.         unit1.addItem("Kilometers");
  68.         unit1.addItem("Inches");
  69.         unit1.addItem("Feet");
  70.         unit1.addItem("Miles");
  71.         listpanel.add(unit1);
  72.  
  73.         Label tolabel = new Label ("  to    ",1);
  74.        listpanel.add(tolabel);
  75.        unit2.addItem("Centimeters");
  76.        unit2.addItem("Meters");
  77.        unit2.addItem("Kilometers");
  78.        unit2.addItem("Inches");
  79.        unit2.addItem("Feet");
  80.        unit2.addItem("Miles");
  81.        listpanel.add(unit2);
  82.  
  83.        Label multlabel = new Label ("Multiply by  ",1);
  84.        textpanel.add(multlabel);
  85.        textpanel.add(textfield);
  86.  
  87.     ItemListener1 lItem = new ItemListener1();
  88.     unit1.addItemListener(lItem);
  89.     unit2.addItemListener(lItem);
  90.  
  91. }
  92.  
  93. /**
  94.  * called when an action event occurs
  95.  * @param evt - the event object
  96.  * @param arg - the target object
  97.  */
  98.  
  99. class ItemListener1 implements ItemListener
  100. {
  101.     public void itemStateChanged( ItemEvent e)
  102.     {
  103.               fromindex = unit1.getSelectedIndex();
  104.               toindex = unit2.getSelectedIndex();
  105.               textfield.setText(values[fromindex][toindex]);
  106.               repaint();
  107.     }
  108. }
  109.  
  110. /**
  111.  * application entry point
  112.  * @param args - commandline arguments
  113.  */
  114.  
  115. public static void main(String args[]) {
  116.  
  117.         Frame f = new Frame("Converter ");
  118.         Converter converter = new Converter();
  119.         converter.init();
  120.         converter.start();
  121.               f.addWindowListener(new WindowCloser());
  122.  
  123.         f.add("Center", converter);
  124.         f.setSize(500, 100);
  125.            f.show();
  126. }
  127. }
  128.  
  129. class WindowCloser extends WindowAdapter
  130. {
  131.     public void windowClosing(WindowEvent e)
  132.     {
  133.         Window win = e.getWindow();
  134.         win.setVisible(false);
  135.         win.dispose();
  136.         System.exit(0);
  137.     }
  138. }
  139.