中易网

JAVA计算器小程序

答案:3  悬赏:50  
解决时间 2021-02-02 09:16
要求:
界面设计:
1.顶级类是Frame
2.声明一个JTextField和Panel
3.在Panel中添加Button
4.将JTextField和Panel添加到顶级类
5.数字按钮0-9是一个类
6.符号按钮+ - * / 是一个类
7.分别设置返回数字和符号的方法
8.其他6个通过Button直接创建
最佳答案
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();

}
}
全部回答
楼主,你分也太少了吧1 帮你写个程序,这么点啊11 分稍微高一点, 我帮你弄出来../
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)); } } }
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
龙须树的叶子为啥卷了? 今年年头上买的,一
汽车的小、中、大型车是怎样分的?
出国留学 考雅思 需要哪些教材和辅导书?请有
丹巴到康定怎么坐车
有没有专门查询汽车违章的网站?
怎么得cf手游超级幸运星
做完私密超声刀流水多
永康小儿推拿地址在什么地方,想过去办事
找本主角冷静幽默智慧解迷的小说
一条神经是什么组成的,有没有包括神经元?
如何控制白酒发酵池温度?
广东茂名的移动卡,最便宜的月租,或套餐是?
我这个菩提根要是卖可以买多少钱
联想的八代标压笔记本什么时候出
贵妃鸡会回家睡觉吗?贵妃鸡能和土鸡一起散养
推荐资讯
贴了面膜怎么感觉脸上起皮,
请描述在多层构架系统的 sql 数据中的多表查
鑫鑫鑫饭店地址在什么地方,想过去办事
捷安特电动车充电器和别的品牌充电器一样吗
假设你有100m内存!需要对1g数据排序!最合适算
楷琪饺子城地址在哪,我要去那里办事
重庆道博文化传播有限公司的位置在那里
水植物富贵竹的水里有沙虫怎么办?
英魂之刃几级送英雄
御道足疗养生会所怎么去啊,有知道地址的么
(跪求)2012高考零距离突破基础知识梳理篇
鱼煲王餐厅在什么地方啊,我要过去处理事情
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?