NumberFrame11.java
import java.awt.*;
import java.awt.event.*;
/** 数字のボタンを配置する NumberFrame11 クラス */
public class NumberFrame11 {
/** 起動時に呼び出されるメソッド */
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 );
NumberAdapter adapter = new NumberAdapter( canvas );
Button buttons[];
buttons = new Button[MAX_NUM]; //ボタンの生成
for( int i=0; i<10; i++ )
buttons[i] = new Button( new Integer(i).toString() );
buttons[10] = new Button( "." );
buttons[11] = new Button( "=" );
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] );
buttons[i].addActionListener( adapter ); //Adapterの登録
}
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クラスの定義の終わり
/** ボタンのアクションを処理する NumberAdapterクラス */
class NumberAdapter implements ActionListener {
/** 描画したいキャンバス */
public NumberCanvas canvas;
/** コンストラクタ */
NumberAdapter( NumberCanvas canvas ){
this.canvas = canvas;
}
/** アクション処理のメソッド */
public void actionPerformed( ActionEvent evt ) {
canvas.setNumberString( ( (Button)evt.getSource() ).getLabel() );
canvas.repaint();
}
} // NumberAdapterクラスの定義の終わり