スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

JAVAで簡易電卓を作ってみた(画面に数値ボタン配置ver)

前にこちらの記事で画面のテキストフィールドに直接数値を入力して、
四則演算される電卓を作りました。(図1)

JAVA電卓画像

      図1.前回作った電卓



今回は画面上に数値ボタンを配置させ、
計算実行できる電卓を作りました(図2)

JAVA電卓画像2

      図2.今回作った電卓


電卓の作り方はこちらのサイトに詳しく載っていました。
(JAVAプログラミング基礎はこちらのサイトで覚えました。)


一部、上記サイトとプログラムを変更しました。
(ボタン配置とwindowを閉じた際のプログラム以外ほぼ同じです。)
プログラムを下記します。





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


class dentaku3 extends JFrame {

JTextField result = new JTextField("",20);
double stackedValue = 0.0;
boolean isStacked = false;
boolean afterCalc = false;
String currentOp = "";


public static void main(String args[]){
dentaku3 frame = new dentaku3("簡易電卓");
frame.setVisible(true);
}


dentaku3(String title){
setTitle(title);
setBounds(100, 100, 260, 240);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


JPanel p = new JPanel();

JPanel key = new JPanel();
key.setLayout(new GridLayout(5,1));

JPanel keisan = new JPanel();


p.add(result);

key.add(new NumberButton("7"),0);
key.add(new NumberButton("8"),1);
key.add(new NumberButton("9"),2);
key.add(new NumberButton("4"),3);
key.add(new NumberButton("5"),4);
key.add(new NumberButton("6"),5);
key.add(new NumberButton("1"),6);
key.add(new NumberButton("2"),7);
key.add(new NumberButton("3"),8);
key.add(new NumberButton("0"),9);
key.add(new NumberButton("."),10);
key.add(new CalcButton("+"),11);
key.add(new CalcButton("-"),12);
key.add(new CalcButton("*"),13);
key.add(new CalcButton("/"),14);



keisan.add(new ClearButton());
keisan.add(new CalcButton("結果"));


Container contentPane = getContentPane();

contentPane.add(p, BorderLayout.NORTH);
contentPane.add(key, BorderLayout.CENTER);
contentPane.add(keisan, BorderLayout.SOUTH);
}



public class NumberButton extends JButton implements ActionListener {

public NumberButton(String keyTop){
super(keyTop);
this.addActionListener(this);
}
public void actionPerformed(ActionEvent evt) {
String keyNumber = this.getText();
appendResult(keyNumber);
}
}


public void appendResult(String c) {
if( ! afterCalc )
result.setText(result.getText() + c);
else {
result.setText(c);
afterCalc =false;
}
}



public class ClearButton extends JButton implements ActionListener {

public ClearButton() {
super("C");
this.addActionListener(this);
}

public void actionPerformed(ActionEvent evt) {
result.setText("");
stackedValue = 0.0;
isStacked = false;
boolean afterCalc = false;
currentOp = "";
}
}


public class CalcButton extends JButton implements ActionListener{

public CalcButton(String op){
super(op);
this.addActionListener(this);
}

public void actionPerformed(ActionEvent e){
if(isStacked){
double resultValue = (Double.valueOf(result.getText())).doubleValue();
if ( currentOp.equals("+"))
stackedValue += resultValue;
else if( currentOp.equals("-"))
stackedValue -= resultValue;
else if( currentOp.equals("*"))
stackedValue *= resultValue;
else if( currentOp.equals("/"))
stackedValue /= resultValue;
result.setText(String.valueOf(stackedValue));
}

currentOp = this.getText();
stackedValue = (Double.valueOf(result.getText())).doubleValue();

afterCalc =true;

if( currentOp.equals("計算")){
isStacked = false;}
else
isStacked = true;
}
}
}





isStackedで値が格納されているかどうか判別し、
aftarCalcでCalc(演算)ボタンが押された後かどうかを判別しています。
この部分のプログラムが難しかったです。




以下は余談です。

当初図3のような電卓を作ろうとしましたが、上手くいきませんでした。
テキストフィールドが2つあるため、アクティブ(フォーカス)になっている方に、
数値ボタンを押して、数値入力されるように試みました。
アクティブ状態を検出・判別する為に、foucus =text1.hasFocus() や FoucusListenerを
使って見ましたが上手くいきませんでした。
理由は数値ボタンを押した時点で、フォーカスが数値ボタンに移ってしまうからのようです。
(結果、数値ボタンからは一方のテキストフィールドにしか数値入力できませんでした)


JAVA電卓画像3
            
      図3.失敗した電卓

スポンサーサイト

Visual Studio(C言語)で四則演算のみの 簡易電卓を作ってみた

簡易電卓の作り方はこちらのサイトに詳しく載ってました。


ちなみに、C言語の基礎はこちらのサイトで覚えました。

作成した簡易電卓は下のようになりました。
(画像は5X7を計算した状態)


C言語電卓画像



次は数値ボタンで値を入力し、計算実行される電卓のプログラミングに挑戦する予定です

JAVAで四則演算のみの 簡易電卓を作ってみた

JAVAで四則演算のみの 簡易電卓を作りました。
ちなみに、JAVA、GUI(swing)プログラムの基礎はこちらのページで覚えました。


早速、簡易電卓のプログラムを下記します。





import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.JComboBox;
import javax.swing.JButton;
import javax.swing.JLabel;
import java.awt.Container;
import java.awt.BorderLayout;
import java.awt.event.*;


class dentaku extends JFrame implements ActionListener{

JTextField text1;
JTextField text2;

JComboBox combo1;

JLabel label2;


public static void main(String args[]){
dentaku frame = new dentaku("簡易電卓");
frame.setVisible(true);
}


dentaku(String title){
setTitle(title);
setBounds(100, 100, 300, 100);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);


JPanel p = new JPanel();


text1 = new JTextField(3);
text2 = new JTextField(3);

String[] combodata = {"+","-","*","/"};
combo1 = new JComboBox(combodata);

JLabel label1 = new JLabel("=");

label2 = new JLabel("");

JButton button1 = new JButton("計算");
button1.addActionListener(this);


p.add(text1);
p.add(combo1);
p.add(text2);
p.add(label1);
p.add(label2);
p.add(button1);


Container contentPane = getContentPane();
contentPane.add(p, BorderLayout.CENTER);
contentPane.add(button1, BorderLayout.SOUTH);
}


public void actionPerformed(ActionEvent e) {

double num1=Double.valueOf(text1.getText());
double num2=Double.valueOf(text2.getText());

int a =combo1.getSelectedIndex();

switch(a){
case 0 :
label2.setText(String.valueOf(num1 + num2));
break;

case 1 :
label2.setText(String.valueOf(num1 - num2));
break;

case 2 :
label2.setText(String.valueOf(num1 * num2));
break;

case 3 :
label2.setText(String.valueOf(num1 / num2));
break;
}
}
}





完成した電卓の操作画面は下のようになりました。
(5X7を計算したときの状態)

JAVA簡易電卓


計算ボタンが若干大きくなりました。


ちなみに、コマンドプロンプトで起動するのではなく、
アイコンをダブルクリックして電卓を起動するファイル(jarファイル)を
つくる方法はこちらのサイトに載っていました。
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。