JAVA计算器小程序

要求:界面设计:1.顶级类是Frame2.声明一个JTextField和Panel3.在Panel中添加Button4.将JTextField和Panel添加到顶级类5.... 要求:
界面设计:
1.顶级类是Frame
2.声明一个JTextField和Panel
3.在Panel中添加Button
4.将JTextField和Panel添加到顶级类
5.数字按钮0-9是一个类
6.符号按钮+ - * / 是一个类
7.分别设置返回数字和符号的方法
8.其他6个通过Button直接创建
展开
 我来答
百度网友3b46a7f
推荐于2017-09-21 · TA获得超过2520个赞
知道小有建树答主
回答量:735
采纳率:0%
帮助的人:0
展开全部
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.lang.*;
import javax.swing.*;
import java.util.*;

public class CalculatorA {
private JFrame jf;
private JButton[] jbs;
private JTextField jtf;
private JButton clear;
private double num1,num2,jieguo;
private char c;
/**
* 构造方法实例化属性
*
*/
public CalculatorA(){
jf=new JFrame("我的计算器v1.0");
jtf=new JTextField(20);
clear=new JButton("clear");
jbs=new JButton[16];
String str="123+456-789*0./=";
for(int i=0; i<str.length(); i++){
jbs[i]=new JButton(str.charAt(i)+"");
}
init();
addEventHandler();
// setFont();
// setColor();
showMe();
}

/**
* 布局图形界面
*
*/
public void init(){
// jf.setLayout(manager)
JPanel jp1=new JPanel();
jp1.add(jtf);

JPanel jp2=new JPanel();
jp2.setLayout(new GridLayout(4,4));
for(int i=0; i<16; i++){
jp2.add(jbs[i]);
}
JPanel jp3=new JPanel();
jp3.add(clear);
jf.add(jp1,BorderLayout.NORTH);
jf.add(jp2,BorderLayout.CENTER);
jf.add(jp3,BorderLayout.SOUTH);
}

public void setFont(){

}

public void setColor(){

}
public void addEventHandler(){
ActionListener lis=new ActionListener(){

public void actionPerformed(ActionEvent e){
// TODO Auto-generated method stub
JButton jb=(JButton)e.getSource();
// String key=(String)e.getActionCommand();
String str =jb.getText().trim();//把字符串的首尾空格去掉!
// String str2=e.getActionCommand().trim();//返回事件源的文本内容
if("0123456789.".indexOf(str)!=-1){//如果是数字或点号
jtf.setText(jtf.getText()+str);
return;
}
if("+-*/".indexOf(str)!=-1){
num1=Double.parseDouble(jtf.getText());

jtf.setText("");
c=str.charAt(0);
jtf.setText("");
return ;
}
if(str.equals("=")){
num2=Double.parseDouble(jtf.getText());
// jtf.setText("");
switch(c){
case '+': jieguo=num1+num2;break;
case '-': jieguo=num1-num2;break;
case '*': jieguo=num1*num2; break;
case '/': jieguo=num1/num2;break;
}
jtf.setText(Double.toString(jieguo));
return;
}

if(e.getActionCommand().equals("clear")){

jtf.setText("");
return;
}
}
};
for(int i=0; i<jbs.length; i++){

jbs[i].addActionListener(lis);
}
clear.addActionListener(lis);
}

public void showMe(){
jf.pack();
jf.setVisible(true);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}
public static void main(String[] args){
new CalculatorA();

}
}
BOBO小南
2008-09-05
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
import java.awt.*;
import java.awt.event.*;

public class computer implements WindowListener,ActionListener{

private Frame f;
double d0,d1,d2,result;
boolean flag=true;
String s,oper;
TextField tf1;
Panel p=new Panel();

public static void main(String args[])
{ computer e=new computer();
e.go();
}

public void go(){
int i;
result=0;
s=new String();
oper=new String("+");
f=new Frame("计算器");
MenuBar mb=new MenuBar();
f.setMenuBar(mb);
Menu m1=new Menu("编辑");
Menu m2=new Menu("帮助");
Menu m3=new Menu("关于");
mb.add(m1);
mb.add(m3);
mb.setHelpMenu(m2);
tf1=new TextField("",15);
Button[] b=new Button[21];
for(i=1;i<21;i++)
{
b[i]=new Button();
b[i].setFont(new Font("仿宋",0,16));
}
b[1].setLabel("退格");
b[2].setLabel("CE");
b[3].setLabel("C");
b[4].setLabel("/");
b[5].setLabel("7");
b[6].setLabel("8");
b[7].setLabel("9");
b[8].setLabel("*");
b[9].setLabel("4");
b[10].setLabel("5");
b[11].setLabel("6");
b[12].setLabel("-");
b[13].setLabel("1");
b[14].setLabel("2");
b[15].setLabel("3");
b[16].setLabel("+");
b[17].setLabel("0");
b[18].setLabel("+/-");
b[19].setLabel(".");
b[20].setLabel("=");
p.setLayout(new GridLayout(5,4));
p.setBackground(new Color(80,30,100));
for(i=1;i<21;i++)
{ p.add(b[i]);
b[i].addActionListener(this);
b[i].setBackground(new Color(20,130,180));
b[i].setForeground(Color.yellow);
}
for(i=1;i<4;i++)
{
b[i].setBackground(new Color(120,180,170));
b[i].setForeground(Color.blue);
}
for(i=1;i<=4;i++)
{ b[i*4].setBackground(new Color(120,180,170));
b[i*4].setForeground(Color.red);
}
b[20].setBackground(Color.red);
f.addWindowListener(this);
f.setLayout(new BorderLayout());
f.add("North",tf1);
f.add("Center",p);
f.setSize(200,200);
f.setVisible(true);
}

public void windowClosing(WindowEvent e){System.exit(1);}
public void windowOpened(WindowEvent e){}
public void windowIconified(WindowEvent e){}
public void windowDeiconified(WindowEvent e){}
public void windowClosed(WindowEvent e){}
public void windowActivated(WindowEvent e){}
public void windowDeactivated(WindowEvent e){}

public void actionPerformed(ActionEvent e){
String i1=tf1.getText();
s=e.getActionCommand();
if(s=="0"| s=="1"|s=="2"|s=="3"|s=="4"|s=="5"|s=="6"|s=="7"|s=="8"|s=="9"|s==".")
{ if(flag) tf1.setText(i1+s);
else
{ tf1.setText(s);
flag=true;
}
}
else if(s=="+"|s=="-"|s=="*"|s=="/")
{ result=Double.parseDouble(i1);
flag=false;
oper=s;
}
else if(s=="=")
{ d0=Double.parseDouble(i1);
if(oper=="+") result+=d0;
if(oper=="-") result-=d0;
if(oper=="*") result*=d0;
if(oper=="/") result/=d0;
tf1.setText(Double.toString(result));
flag=false;
}
else if(s=="CE")
{ tf1.setText("");
flag=false;
}
else if(s=="C")
{ result=0;
tf1.setText("");
flag=false;
}
else if(s=="退格")
{ String ss=tf1.getText();
int i=ss.length();
ss=ss.substring(0,i-1);
tf1.setText(ss);
}
else if(s=="+/-")
{ d2=-1*Double.parseDouble(tf1.getText());
tf1.setText(Double.toString(d2));
}
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
痴情的张无忌
2008-09-05 · TA获得超过532个赞
知道小有建树答主
回答量:557
采纳率:0%
帮助的人:188万
展开全部
楼主,你分也太少了吧1 帮你写个程序,这么点啊11
分稍微高一点, 我帮你弄出来../
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式