前のページ
()の
作成で、数値入力用ボタンのイベント処理を追加ました。
しかし、まだ+−*/=の演算ボタンは機能していません。
これを行わせるのが、SimpleCalcPanelを継承したNomalCalcPanelでした。
( 初期設計の確認 )
以下に全体のクラス図を示します。
以下で、このNomalCalcPanelを作成し、この作品を完成させましょう。
ここでは、SimpleCalcPanelで作成したactionPerforメソッドを、再びオーバーライドして
います。
これにより、
SimpleCalcPanelのコンストラクタで行ったthis.btnNumb[i].addActionListener(this);
のthisは、SimpleCalcPanelを継承したNomalCalcPanelで生成しているため
そのNomalCalcPanelオブジェクトを指しています。
つまり、数値入力用のボタンをクリックした場合も、
このNomalCalcPanelでオーバーライドした上記actionPerformedが呼び出されることになります。
よって、数値入力用ボタンの処理をも行わせるには、
この中でSimpleCalcPanelで作ったactionPerformedを呼び出さなければなりません。
目標の実行例のように動作するプログラムは、
ボタンをクリックした時にそのボタンの演算を行うのではなく、
前に押したボタンの演算がなされます。
例えば 2 * 3 + 4 とクリックした場合、
+をクリックした時に、lbl1のラベルに表示される2と、txt1のテキストフィールドに表示される3が掛け算され、
結果の6が、lbl1のラベルに表示されます。
よって、以前にクリックしたボタンが何かを残しておく必要があり、それがbackOpフィールドです。
←正しく修正してからクリックください。
←わからない場合は、クリック