作成 2010.01.23
更新 2010.01.23
更新 2010.01.23
Java の練習 Level 3
http://oshiete1.goo.ne.jp/qa5604930.html
問題
電卓の Java アプリケーションである。以下のコードに引き算と割り算の機能を追加して完成させよ。
Dentaku.java
// Dentaku.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Dentaku extends JFrame implements ActionListener {
JTextField text1, text2;
JButton button1, button2, button3;
JLabel label;
// コンストラクタ
public Dentaku() {
// コンテントペインを取得
Container contentPane = getContentPane();
// レイアウトマネージャーを設定
contentPane.setLayout(new GridLayout(6,1));
// テキストフィールド生成
text1 = new JTextField("", 20);
text2 = new JTextField("", 20);
// テキストフィースドを追加
contentPane.add(text1);
contentPane.add(text2);
// ボタンを作成
button1 = new JButton("+");
button2 = new JButton("x");
button3 = new JButton("Clear");
// アクションリスナーを登録
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
// ボタンを追加
contentPane.add(button1);
contentPane.add(button2);
contentPane.add(button3);
// ラベルを生成
label = new JLabel("");
// 文字を真ん中に表示
label.setHorizontalAlignment(JLabel.CENTER);
// ラベルを追加
contentPane.add(label);
// ウインドウが閉じられたときにアプリケーションを終了するように設定
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// サブコンポーネントの推奨サイズおよびレイアウトに合わせて
// この Window をサイズ変更するように設定
pack();
// 表示します
setVisible(true);
}
public static void main(String[] args) {
// フレームを作成
Dentaku frame = new Dentaku();
}
/**
* アクションが発生すると呼び出されます。
*/
public void actionPerformed(ActionEvent ae){
// イベントが指定されたボタンで発生した場合
//足し算
if (ae.getSource().equals(button1)) {
try{
String tx1=text1.getText();
String tx2=text2.getText();
double d1=Double.parseDouble(tx1);
double d2=Double.parseDouble(tx2);
String answer=Double.toString(d1+d2);
label.setText(answer);
}catch (NumberFormatException e) {
label.setText("数字を正しく入力してください。");
}
}
//掛け算
if (ae.getSource().equals(button2)) {
try{
String tx1=text1.getText();
String tx2=text2.getText();
double d1=Double.parseDouble(tx1);
double d2=Double.parseDouble(tx2);
String answer=Double.toString(d1*d2);
label.setText(answer);
}catch (NumberFormatException e) {
label.setText("数字を正しく入力してください。");
}
} if (ae.getSource().equals(button3)) {
text1.setText("");
text2.setText("");
label.setText("");
}
}
}
解答例
// Dentaku.java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Dentaku extends JFrame implements ActionListener {
JTextField text1, text2;
JButton button1, button2, button3, button4, button5;
JLabel label;
// コンストラクタ
public Dentaku() {
// コンテントペインを取得
Container contentPane = getContentPane();
// レイアウトマネージャーを設定
contentPane.setLayout(new GridLayout(6,1));
// テキストフィールド生成
text1 = new JTextField("", 20);
text2 = new JTextField("", 20);
// テキストフィースドを追加
contentPane.add(text1);
contentPane.add(text2);
// ボタンを作成
button1 = new JButton("+");
button2 = new JButton("x");
button3 = new JButton("Clear");
button4 = new JButton("-");
button5 = new JButton("/");
// アクションリスナーを登録
button1.addActionListener(this);
button2.addActionListener(this);
button3.addActionListener(this);
button4.addActionListener(this);
button5.addActionListener(this);
// ボタンを追加
contentPane.add(button1);
contentPane.add(button2);
contentPane.add(button4);
contentPane.add(button5);
contentPane.add(button3);
// ラベルを生成
label = new JLabel("");
// 文字を真ん中に表示
label.setHorizontalAlignment(JLabel.CENTER);
// ラベルを追加
contentPane.add(label);
// ウインドウが閉じられたときにアプリケーションを終了するように設定
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
// サブコンポーネントの推奨サイズおよびレイアウトに合わせて
// この Window をサイズ変更するように設定
pack();
// 表示します
setVisible(true);
}
public static void main(String[] args) {
// フレームを作成
Dentaku frame = new Dentaku();
}
/**
* アクションが発生すると呼び出されます。
*/
public void actionPerformed(ActionEvent ae){
// イベントが指定されたボタンで発生した場合
//足し算
if (ae.getSource().equals(button1)) {
try{
String tx1=text1.getText();
String tx2=text2.getText();
double d1=Double.parseDouble(tx1);
double d2=Double.parseDouble(tx2);
String answer=Double.toString(d1+d2);
label.setText(answer);
}catch (NumberFormatException e) {
label.setText("数字を正しく入力してください。");
}
}
//掛け算
if (ae.getSource().equals(button2)) {
try{
String tx1=text1.getText();
String tx2=text2.getText();
double d1=Double.parseDouble(tx1);
double d2=Double.parseDouble(tx2);
String answer=Double.toString(d1*d2);
label.setText(answer);
}catch (NumberFormatException e) {
label.setText("数字を正しく入力してください。");
}
}
//Clear
if (ae.getSource().equals(button3)) {
text1.setText("");
text2.setText("");
label.setText("");
}
//引き算
if (ae.getSource().equals(button4)) {
try{
String tx1=text1.getText();
String tx2=text2.getText();
double d1=Double.parseDouble(tx1);
double d2=Double.parseDouble(tx2);
String answer=Double.toString(d1-d2);
label.setText(answer);
}catch (NumberFormatException e) {
label.setText("数字を正しく入力してください。");
}
}
//割り算
if (ae.getSource().equals(button5)) {
try{
String tx1=text1.getText();
String tx2=text2.getText();
double d1=Double.parseDouble(tx1);
double d2=Double.parseDouble(tx2);
String answer=Double.toString(d1/d2);
label.setText(answer);
}catch (NumberFormatException e) {
label.setText("数字を正しく入力してください。");
}
}
}
}
解説のようなもの
コードが長いだけ。
button4, button5 を追加してイベントを追加、ペインに追加、イベント内容を記述。
タグ: Java