プロが教える店舗&オフィスのセキュリティ対策術

appletviewerに、ボックスの中に整数を好きなだけ入力し、個数、合計、平均値を以下のように表示させるようなプログラムを作りたいです。(1,2,3を入力した場合)
 
  データ□ (入力)
       (計算)
  個数=3
  合計=6
  平均値=2
※□はボックスです。(入力)(計算)はクリックするボタンです。
どなたかご指導やアドバイスをお願いいたします。まだまだ初心者でとても困っています。。

ちなみに途中まで考えたのが以下のプログラムです。
import java.applet.*;
import java.awt.Button;
import java.awt.Label;
import java.awt.TextField;
import java.awt.event.*;

public class Lec1106 extends Applet implements ActionListener
{
private TextField box1 = new TextField(5);
private Label moji1 = new Label("データ");
private Label moji2 = new Label("個数=");
private Label moji3 = new Label("合計=");
private Label moji4 = new Label("平均値=");
private Button nyuuryoku = new Button("入力");
private Button keisan = 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);

A 回答 (2件)

1)このプログラムだと、どっちのボタンを押してもactionPerformed()をそのまま実行してしまうから、ButtonにsetActionCommand()でコマンド文字列を設定しておき、e.getActionCommand()で、どのボタンを押したかを判定して、処理を切り分けたらいいのではないでしょうか。



http://java.sun.com/docs/books/tutorial/uiswing/ …

↑こちらのサンプルを読んでみてください。

2)数値を入れて、いちいち「入力」ボタンを押さないと入力されないのは使い勝手が悪そうなので、TextFieldもEnterキーを押すとボタンと同じようにActionEventを発火しますから、これを利用するとガンガン数を入力できて、面白くなりそう(?)ですよね。

具体的には、
a.「入力」「計算」ボタンを廃止して、「クリア」ボタンのみにする。
b.「クリア」ボタンとbox1のActionEventの受け取り先として、thisを登録する。
c.actionPerformed()で、「クリア」ボタンを押されて来たのなら合計、数値の個数をクリア、それ以外ならテキストフィールドでEnterキーが押されたと言うことで、数値入力処理&TextFieldの内容クリアをする。

AWTでなく、Swingを使う(JApplet,JTextFieldなど)ようにすれば、JTextFieldでsetActionCommand()が使えて、上記cでの判定も確実に行えるのでそっちがいいのかな?と思います。

以上、実際に動かしていないので、完全にこの通り動くかはわかりませんが、アイデアは参考になると思います。
    • good
    • 0

一遍にやろうとせずに段階を追って作り込みましょう。


そのうえで、解らないところを絞って質問して下さい。

段階例
v0.1  actionPerformedは空でいいので、とりあえずコンパイル出来ることを確認し、
アプレット画面がちゃんと表示されることを確認する

v0.2  ボタンをクリックしたら、どのボタンかをチェックしてラベルの表示を変更するようにactionPerformedを記述。

v0.3  actionPerformedを改良し、textfieldに入っている文字をチェックして、ラベルに反映させる。
これまでの入力値を表示するためのラベルもあった方がよさそう。

v0.4  入力個数(回数)、合計、平均を保持する変数を作る
(privateでよい)
  actionPerformedを改良しv0.3での結果を元にこれらの変数にデータを入れる

v0.5  変数の変更をラベルに反映させる。

v0.6  バグ取り完了すれば、リリースってとこか
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!