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();
}
}
No.2ベストアンサー
- 回答日時:
ボタンごとにリスナーを作るんじゃなくて、
DentakuクラスにActionListenerを実装しなよ。
public class Dentaku implements ActionListener{
…
public void actionPerformed(ActionEvent event){
String command = event.getActionCommand();
…
各ボタン(アクションコマンド)ごとの振る舞い
}
public Dentaku(){
…
btn1.addActionListener(this);
…
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
夏が終わったと感じる瞬間って、どんな時?
まだまだ暑い今日この頃。 しかしながら、もう夏は終わっている!……はず。 あなたが思う「夏が終わった!」エピソードを教えてください。
-
家・車以外で、人生で一番奮発した買い物
どんなものにお金をかけるかは人それぞれの価値観ですが、 誰もが一度は清水の舞台から飛び降りる覚悟で、ちょっと贅沢な買い物をしたことがあるはず。
-
ホテルを選ぶとき、これだけは譲れない条件TOP3は?
ホテルを探す時、予約サイトで希望条件の絞り込みができる便利な世の中。 あなたは宿泊先を決めるとき「これだけは譲れない」と思う条件TOP3を教えてください。
-
昨日見た夢を教えて下さい
たまにすごいドラマチックな夢見ること、ありませんか? 起きてからも妙に記憶に残っているような、そんな夢。
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
Javaで電卓を作りたい
Java
-
Java 電卓の連続計算
Java
-
javaで電卓を作りたいのですが(Swing
Java
-
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
JPanelの重ね方/OverlayLayout他
-
ボタンがマウスオーバーしない...
-
【Swing】JPanel クラス外から...
-
TextAreaでの文字の色
-
ArrayListの使い方について(初...
-
javaで文字数制限するには?
-
ArrayList
-
TABキーの検出
-
連番をオブジェクト名の最後に...
-
JavaのswingでCardLayoutの画面...
-
ダブルクォーテーションのrepla...
-
javaで質問です。 文字列2023/2...
-
オブジェクトの中のプロパティ...
-
System.err. printlnとSystem.o...
-
System.out.printlnの意味がよ...
-
VBAで配列の計算
-
Path型をString型へ変換する(Java)
-
C#で判断文(三択)の省略形は...
-
C言語のポインターに関する警告
-
変数を動的に作るには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
java junit list同士の比較方法
-
JPanelの切り替えと再描画
-
javaで文字数制限するには?
-
TextAreaでの文字の色
-
Java JPanelを使ったコードにつ...
-
java 一意の値を取り出す方法
-
JPanelの重ね方/OverlayLayout他
-
Java-Swing TextAreaにスクロー...
-
JDialogを閉じた時の処理
-
4択クイズでのランダム出題の...
-
【Swing】JPanel クラス外から...
-
最後の行に移動するには?
-
エラーで式の開始が不正ですと...
-
’じゃんけん’をするプログラム...
-
JTable の 列幅を個別に設定す...
-
ArrayListの使い方について(初...
-
次のように書いたのですが、ウ...
-
TABキーの検出
-
JTableの列ヘッダ
-
c言語のプログラミングで1から1...
おすすめ情報