用java做的计算器

灰丝乱想 2014-04-14 04:57:45
package com.cjg.jsj;
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Frame;
import java.awt.GridLayout;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;



public class Calculator extends WindowAdapter
{
Panel p1=new Panel(); //创建面板p1
Panel p2=new Panel(); //创建面板p2
Panel p3=new Panel(); //创建面板p3
TextField txt; //创建文本框对象
private Button[] b=new Button[17]; //创建按钮数组
private String ss[]={"7","8","9","+","4","5","6","-","1","2","3","*","清空","0","=","/","关闭"}; //创建字符串数组
static double a; //创建double类型变量
static String s,str; //创建string类型变量
/**
* @param args
*/
public static void main(String[] args)
{
(new Calculator()).frame(); //创建Calculator对象
// TODO Auto-generated method stub

}
public void frame(){ //实现界面
Frame fm=new Frame("计算器"); //创建窗口对象
for(int i=0;i<=16;i++)
{
b[i]=new Button(ss[i]); //为按钮赋值
}
for(int i=0;i<=15;i++)
{
p2.add(b[i]); //添加按钮到面板p2
}
b[16].setBackground(Color.yellow); //设置按钮的背景色为黄色
txt=new TextField(15); //创建和设置文本框
txt.setEditable(false);
for(int i=0;i<=16;i++)
{
b[i].addActionListener(new buttonlistener()); //为按钮添加监听器
}
b[16].addActionListener(new close()); //为按钮添加关闭监听器
fm.addWindowListener(this);
fm.setBackground(Color.red);
p1.setLayout(new BorderLayout()); //设置面板p1布局管理器
p1.add(txt,"North"); //添加文本框到北面部分
p2.setLayout(new GridLayout(4,4)); //设置面板p2布局管理器
p3.setLayout(new BorderLayout()); //设置面板p3布局管理器
p3.add(b[16]); //添加按钮到面板p3
//添加各个面板到窗口上
fm.add(p1,"North");
fm.add(p2,"Center");
fm.add(p3,"South");
fm.pack();
fm.setVisible(true); //显示窗口
}
public void WindowClosing(WindowEvent e)
{
System.exit(0); //退出系统
}
class buttonlistener implements ActionListener
{
public void actionPerformed(ActionEvent e)
{
Button btn=(Button) e.getSource(); //获取发生事件按钮
if(btn.getLabel()=="=")
{
jisuan();
str=String.valueOf(a);
txt.setText(str);
s="";
}
else if(btn.getLabel()=="+")
{
s="+";
jisuan();
txt.setText("");

}
else if(btn.getLabel()=="-")
{
s="-";
jisuan();
txt.setText("");

}
else if(btn.getLabel()=="*")
{
s="*";
jisuan();
txt.setText("");

}
else if(btn.getLabel()=="/")
{
s="/";
jisuan();
txt.setText("");

}
else
System.out.println("出错啦");

}
public void jisuan() //编写具体的计算方法
{
if(s=="+")
a+=Double.parseDouble(txt.getText());
else if(s=="-")
a-=Double.parseDouble(txt.getText());
else if(s=="*")
a*=Double.parseDouble(txt.getText());
else if(s=="/")
a/=Double.parseDouble(txt.getText());
else
a=Double.parseDouble(txt.getText());

}
}
}
class close implements ActionListener //退出方法
{
public void actionPerformed(ActionEvent e)
{
System.exit(0);
}
}
怎么得不到结果啊。。。
...全文
239 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
panic5 2014-04-16
  • 打赏
  • 举报
回复
所有的按钮都统一使用事件监听方法去处理,别用if else if去判断
Kenzson 2014-04-16
  • 打赏
  • 举报
回复
如一楼所说,错得很离谱,首先你需要知道的是数字键按钮事件监听需要添加在监听器中啊
Fate- 2014-04-16
  • 打赏
  • 举报
回复
不是java写的嘛 为何代码是c# 呵呵
Arron_XiongYe 2014-04-16
  • 打赏
  • 举报
回复
Arron_XiongYe 2014-04-16
  • 打赏
  • 举报
回复
只愿云淡风清 2014-04-15
  • 打赏
  • 举报
回复
额,这个还是用c#些比较方便吧
小张hold 2014-04-15
  • 打赏
  • 举报
回复
我前几天上实验课做的简单计算器,给你参考一下

import java.awt.EventQueue;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JLabel;
import java.awt.Color;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;

public class Ademo extends JFrame {

	/**
	 * 
	 */
	private JPanel contentPane;
	private JTextField textField;
	private JTextField textField_1;
	private JTextField textField_2;
	private String str;
	

	/**
	 * Launch the application.
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				
					Ademo frame = new Ademo();
					frame.setVisible(true);
					
				
			}
		});
	}

	/**
	 * Create the frame.
	 */
	public Ademo() {
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		setBounds(100, 100, 234, 300);
		contentPane = new JPanel();
		contentPane.setForeground(Color.BLACK);
		contentPane.setToolTipText("简易计算器");
		contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
		setContentPane(contentPane);
		contentPane.setLayout(null);
		
		JLabel label = new JLabel("简易计算器");
		label.setForeground(Color.BLACK);
		label.setBounds(68, 10, 103, 24);
		contentPane.add(label);
		
		JLabel label_1 = new JLabel("运算数一");
		label_1.setForeground(Color.BLACK);
		label_1.setBounds(20, 65, 54, 15);
		contentPane.add(label_1);
		
		JLabel label_2 = new JLabel("运算数二");
		label_2.setForeground(Color.BLACK);
		label_2.setBounds(20, 96, 54, 15);
		contentPane.add(label_2);
		
		textField = new JTextField();
		textField.setBounds(86, 62, 85, 21);
		contentPane.add(textField);
		textField.setColumns(10);
		
		textField_1 = new JTextField();
		textField_1.setColumns(10);
		textField_1.setBounds(86, 93, 85, 21);
		contentPane.add(textField_1);
		
		JLabel label_3 = new JLabel("计算结果");
		label_3.setForeground(Color.BLACK);
		label_3.setBounds(20, 128, 54, 15);
		contentPane.add(label_3);
		
		textField_2 = new JTextField();
		textField_2.setColumns(10);
		textField_2.setBounds(86, 125, 85, 21);
		contentPane.add(textField_2);
		
		JButton btnPlus = new JButton("相加");
		btnPlus.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//相加事件
			int i=Integer.parseInt(textField.getText());
			int j=Integer.parseInt(textField_1.getText());
			int k=i+j;
				
			str=""+k;
			

			}
		});
		btnPlus.setBounds(26, 169, 65, 25);
		contentPane.add(btnPlus);
		
		JButton btnMin = new JButton("相减");
		btnMin.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//相减事件
				int i=Integer.parseInt(textField.getText());
				int j=Integer.parseInt(textField_1.getText());
				int l=i-j;
				str=""+l;
			}
		});
		btnMin.setBounds(101, 169, 70, 25);
		contentPane.add(btnMin);
		
		JButton button = new JButton("运算结果");
		button.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				//结果事件
				textField_2.setText(str);
				textField.setText("");
				textField_1.setText("");

			}
		});
		button.setBounds(26, 204, 145, 34);
		contentPane.add(button);
	}
}

crokery 2014-04-14
  • 打赏
  • 举报
回复
错得很离谱,

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧