FileDocCategorySizeDatePackage
PrettiestTable.javaAPI DocExample2136Sun Mar 28 19:09:26 BST 1999None

PrettiestTable.java

import java.text.*;
import java.applet.*;
import java.awt.*;


public class PrettiestTable extends Applet {

  NumberFormat myFormat = NumberFormat.getNumberInstance();
  FieldPosition fp = new FieldPosition(NumberFormat.INTEGER_FIELD);
  
  public void init() {

    this.setFont(new Font("Serif", Font.BOLD, 12));
    myFormat.setMaximumIntegerDigits(3);
    myFormat.setMaximumFractionDigits(2);
    myFormat.setMinimumFractionDigits(2);
      
  }
  
  public void paint(Graphics g) {
  
    FontMetrics fm = this.getFontMetrics(this.getFont()) ;
    int xmargin = 5;
    int lineHeight = fm.getMaxAscent() + fm.getMaxDescent();
    int y = lineHeight;
    int x = xmargin;
    int desiredPixelWidth = 3 * fm.getMaxAdvance();
    int fieldWidth = 6 * fm.getMaxAdvance();
    int headerWidth = fm.stringWidth("Degrees");
    g.drawString("Degrees", x + (fieldWidth - headerWidth)/2, y);
    headerWidth = fm.stringWidth("Radians");    
    g.drawString("Radians", x + fieldWidth + (fieldWidth - headerWidth)/2, y);
    headerWidth = fm.stringWidth("Grads");
    g.drawString("Grads", x + 2*fieldWidth + (fieldWidth - headerWidth)/2, y);
    
    for (double degrees = 0.0; degrees < 360.0; degrees++) {
      y += lineHeight;
      String degreeString = myFormat.format(degrees, new StringBuffer(), 
       fp).toString(); 
      String intPart = degreeString.substring(0, fp.getEndIndex());
      g.drawString(degreeString, xmargin + desiredPixelWidth 
       - fm.stringWidth(intPart), y);
      String radianString = myFormat.format(Math.PI*degrees/180.0, 
       new StringBuffer(), fp).toString();
      intPart = radianString.substring(0, fp.getEndIndex());
      g.drawString(radianString, 
       xmargin + fieldWidth + desiredPixelWidth - fm.stringWidth(intPart), y);
      String gradString = myFormat.format(400 * degrees / 360, 
       new StringBuffer(), fp).toString();
      intPart = gradString.substring(0, fp.getEndIndex());
      g.drawString(gradString, 
       xmargin + 2*fieldWidth + desiredPixelWidth - fm.stringWidth(intPart), y);
    }
  
  }
    
}