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クラスの定義の終わり