質問: new button("計算"); public void init() { resize(320,240); add(moji1); add(box1); add(nyuuryoku); nyuuryoku.addactionlistener(this); add(keisan); keisan.addactionlistener(this); add(moji2); add(moji3); add(moji4); } public void actionperformed(actionevent e) {int i; string t1=box1.gettext(); i=integer.parseint(t1);
回答: 1)このプログラムだと、どっちのボタンを押してもactionperformed()をそのまま実行してしまうから、buttonにsetactioncommand()でコマンド文字列を設定しておき、e.getactioncommand()で、どのボタンを押したかを判定して、処理を切り分けたらいいのではないでしょうか。 http://java.sun.com/docs/books/tutorial/uiswing/components/button.html ↑こちらのサンプルを読んでみてください。 2)数値を入れて、いちいち「入力」ボタンを押さないと入力されないのは使い勝手が悪そうなので、textfieldもenterキーを押すとボタンと同じようにactioneventを発火しますから、これを利用するとガンガン数を入力できて、面白くなりそう(?)ですよね。 具体的には、 a.「入力」「計算」ボタンを廃止して、「クリア」ボタンのみにする。 b.「クリア」ボタンとbox1のactioneventの受け取り先として、thisを登録する。 c.actionperformed()で、「クリア」ボタンを押されて来たのなら合計、数値の個数をクリア、それ以外ならテキストフィールドでenterキーが押されたと言うことで、数値入力処理&textfieldの内容クリアをする。 awtでなく、swingを使う(japplet,jtextfieldなど)ようにすれば、jtextfieldでsetactioncommand()が使えて、上記cでの判定も確実に行えるのでそっちがいいのかな?と思います。 以上、実際に動かしていないので、完全にこの通り動くかはわかりませんが、アイデアは参考になると思います。