NumberFrame.java



import java.awt.*;
 
/** 数字のボタンを配置する NumberFrame クラス */
 
public class NumberFrame {
 
   /** 起動時に呼び出されるメソッド */
 
      public static void main( String argv[] ) {
 
            int MAX_NUM = 12;
 
            Frame frame = new Frame("Number Buttons");  //フレームの生成
            Panel panel = new Panel();                  //パネルの生成
            NumberCanvas canvas = new NumberCanvas();   //キャンバスの生成
 
            GridLayout lay = new GridLayout( 3, 4 );    //レイアウトの生成
            panel.setLayout( lay );         //レイアウトの設定
 
            Color color = new Color( 250, 250, 240 );
            Font buttonFont = new Font( "TimesRoman", Font.BOLD, 36 );
            Font canvasFont = new Font( "TimesRoman", Font.PLAIN, 36 );
 
            panel.setBackground( color );
            canvas.setBackground( Color.black );
            canvas.setFont( canvasFont );
 
            NumberButton buttons[];
            buttons = new NumberButton[MAX_NUM];     //ボタンの生成
            for( int i=0; i<10; i++ )
                 buttons[i] =
                    new NumberButton( canvas, new Integer(i).toString() );
            buttons[10] = new NumberButton( canvas, "." );
            buttons[11] = new NumberButton( canvas, "=" );
            for( int i=0; i<MAX_NUM; i++ ) {
                 buttons[i].setBackground( color );
                 buttons[i].setForeground( Color.black );
                 buttons[i].setFont( buttonFont );
                 panel.add( buttons[i] );
            }
 
            canvas.setSize( 300, 40 );
            frame.add( "North", canvas );
            panel.setSize( 300, 400 );
            frame.add( "Center", panel );
            frame.pack();
            frame.setSize( 300, 440 );
            frame.show();
      }
} // NumberFrameクラスの定義の終わり
 
/** 数字を表示する NumberCavas クラス */
 
class NumberCanvas extends Canvas {
 
 
   /** 表示したい文字列を記憶するバッファ */
 
      protected StringBuffer numberString;
 
   /** コンストラクタ */
 
      NumberCanvas(){
 
            super();  // Canvas のコンストラクタ
            numberString = new StringBuffer(" ");
      }
 
   /** 描画のメソッド */
 
      public void paint( Graphics g ) {
 
            g.setColor( Color.green );
            g.drawString( numberString.toString(), 4, 34 );
      }
 
   /** 文字列の設定のメソッド */
 
      public void setNumberString( String str ) {
 
            numberString.insert( 0, str );
            numberString.setLength( str.length() );
      }
} // NumberCanvasクラスの定義の終わり
 
/** 数字を選択する NumberButton クラス */
 
class NumberButton extends Button {
 
   /** 描画したいキャンバス */
 
      public NumberCanvas canvas;
 
   /** コンストラクタ */
 
      NumberButton( NumberCanvas canvas, String str ){
 
            super( str );  // Button のコンストラクタ
            this.canvas = canvas;
      }
 
   /** アクション処理のメソッド */

 
      public boolean action( Event event, Object object ) {
 
             canvas.setNumberString( object.toString() );
             canvas.repaint();
 
             return true;
      }
} // NumberButtonクラスの定義の終わり