dポイントプレゼントキャンペーン実施中!

Javaについて勉強中の学生です。
よろしくお願いします。

CGIによるプログラムは一通り勉強しました。
次にGUIによるプログラムを勉強中です。

そこで電卓を作ってみようと思いましたが、よくわからないところがあります。
ご教示いただければ幸いです。

一応外見だけは作ることができましたが、イベントを登録するときに電卓のボタンをbtn1,btn2,btn3…とすればイベントを登録することはできるのですが、それだとボタンの分だけ作成しなければならず修正を加えるのが大変になってしまいます。
例)btn1.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent ae){
hyozi.setText(hyozi.getText() + "1");
}
}

そこで「btn」に統一しボタンに表示されている文字列を使い簡潔にプログラムをまとめたいのですがどのようにすればよいのかわかりません。以下のプログラムに追加できるようなものを教えていただけないでしょうか?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Dentaku{
private JFrame frame;
private JPanel panel_fun,panel_ten;
private JTextField hyozi;
private JButton btn;

public Dentaku(){
//フレームの作成してレイアウトをセット
frame = new JFrame("簡易電卓プログラム");
frame.setLayout(new BorderLayout());

//パネルを作成してレイアウトをセット
panel_fun = new JPanel();
panel_fun.setLayout(new GridLayout(2,3));

panel_ten = new JPanel();
panel_ten.setLayout(new GridLayout(4,3));


//表示用テキストボックスを作成
hyozi = new JTextField();

//電卓のボタンを作成
panel_fun.add(btn = new JButton("CA"));
panel_fun.add(btn = new JButton("+"));
panel_fun.add(btn = new JButton("-"));
panel_fun.add(btn = new JButton("*"));
panel_fun.add(btn = new JButton("/"));
panel_fun.add(btn = new JButton("="));

panel_ten.add(btn = new JButton("1"));
panel_ten.add(btn = new JButton("2"));
panel_ten.add(btn = new JButton("3"));
panel_ten.add(btn = new JButton("4"));
panel_ten.add(btn = new JButton("5"));
panel_ten.add(btn = new JButton("6"));
panel_ten.add(btn = new JButton("7"));
panel_ten.add(btn = new JButton("8"));
panel_ten.add(btn = new JButton("9"));
panel_ten.add(btn = new JButton("0"));

//フレームに表示用テキストボックスをセット(BorderLayoutの北側)
frame.add(hyozi,BorderLayout.NORTH);

//フレームにパネルをセット(BorderLayoutの中央,南側)
frame.add(panel_fun,BorderLayout.CENTER);
frame.add(panel_ten,BorderLayout.SOUTH);

//フレームの詳細設定
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(300,250);
frame.setVisible(true);
}

//mainメソッドの定義
public static void main(String[] args){
Dentaku application = new Dentaku();
}
}

「JavaでのSwingを使った簡易電卓作」の質問画像

A 回答 (2件)

ボタンごとにリスナーを作るんじゃなくて、


DentakuクラスにActionListenerを実装しなよ。

public class Dentaku implements ActionListener{

  public void actionPerformed(ActionEvent event){
    String command = event.getActionCommand();
    …
    各ボタン(アクションコマンド)ごとの振る舞い
  }
  public Dentaku(){
    …
    btn1.addActionListener(this);
    …
  }
    • good
    • 1
この回答へのお礼

とても参考になりました。ありがとうございます
これから実践してみようと思います。

お礼日時:2011/10/15 18:40

下半分全然読んでないけどとりあえず配列。

    • good
    • 0
この回答へのお礼

配列で実行をするとクリックしたときに,コマンド上に変な文字列が一気に出てきてしまいます。
ありがとうございました。

お礼日時:2011/10/15 18:41

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