タグ
  ANSI (1)
  ASP.NET (10)
  Active Directory (55)
  BAT (16)
  Backup (2)
  CSharp (11)
  CentOS (4)
  C言語 (4)
  DNS (4)
  Excel (3)
  FFmpeg (1)
  Fedora (4)
  FreeBSD (6)
  IPv6 (3)
  Java (11)
  JavaScript (8)
  LAN (1)
  Link (4)
  Linux (15)
  Mac (1)
  Mail (2)
  Microsoft (3)
  NIS (1)
  Node.js (6)
  OpenIndiana (1)
  OpenLDAP (2)
  OpenSSL (1)
  OpenSolaris (4)
  PHP (2)
  Perl (2)
  Postfix (1)
  PostgreSQL (2)
  PowerShell (34)
  RFC (3)
  SQL Server (5)
  Solaris (10)
  Ubuntu (9)
  VBScript (73)
  VCpp (2)
  VMware (3)
  Visual Basic (1)
  WMI (17)
  WSF (5)
  WSH (10)
  Windows (19)
  bash (1)
  bind (1)
  iSCSI (1)
  おまけ (3)
  作成中 (8)
  慣用句 (3)
  正規表現 (6)
  運用 (8)
作成 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
[リロード] [記事修正] [新規作成] [使用方法]
©2004-2012 UPKEN IPv4