簡単なGUI作品制作例 電卓 ステップ4

前のページ)の 作成で、数値入力用ボタンのイベント処理を追加ました。

しかし、まだ+−*/=の演算ボタンは機能していません。
これを行わせるのが、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フィールドです。

←正しく修正してからクリックください。

←わからない場合は、クリック