有人知道怎么能在旁边的文本框里面输出计算过程吗?

Outsider1999 2017-12-24 02:19:24
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

class Caculator {

TextField showresult = new TextField(40); //显示文本框
StringBuffer s1 = new StringBuffer(); //记录运算数字,以及保留结果
StringBuffer s2 = new StringBuffer(); //记录运算数字,保留上一个输入的数字或运算结果
static String flag = new String(); //标记运算符号:+,-,*,/
boolean start = true; //标记运算开始或结束,保证一次运算之后,第二次进行运算时能同时清空显示界面,即s1为空

public void init(){
//主界面
JFrame window = new JFrame("计算器");
JPanel panelleft=new JPanel();
panelleft.setLayout(new BorderLayout());
JTextArea testShow=new JTextArea();


JPanel p1 = new JPanel();//文本框所在面板
p1.add(showresult);
panelleft.add(p1,BorderLayout.NORTH);
JPanel p2 = new JPanel();
p2.setLayout(new GridLayout(1,3));
//panelleft.add(p2,BorderLayout.CENTER);
//动作监听器
ActionListener listen =new ActionListener() {

public void actionPerformed(ActionEvent e) {

//输入数字0~9
if(e.getActionCommand()=="0"){

if(!s1.toString().equals(new String())){//判断是否为
if(!start){
//s1清零,保证可以重新输入数字
s1.delete(0, s1.length());
}
start = true;
showresult.setText(s1.append("0").toString());

}
}


if(e.getActionCommand()=="1"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
showresult.setText(s1.append("1").toString());
}
if(e.getActionCommand()=="2"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
showresult.setText(s1.append("2").toString());
}
if(e.getActionCommand()=="3"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
showresult.setText(s1.append("3").toString());
}
if(e.getActionCommand()=="4"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
showresult.setText(s1.append("4").toString());
}
if(e.getActionCommand()=="5"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
showresult.setText(s1.append("5").toString());
}
if(e.getActionCommand()=="6"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
showresult.setText(s1.append("6").toString());
}
if(e.getActionCommand()=="7"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
showresult.setText(s1.append("7").toString());
}
if(e.getActionCommand()=="8"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
showresult.setText(s1.append("8").toString());
}
if(e.getActionCommand()=="9"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
showresult.setText(s1.append("9").toString());
}
//输入小数点
if(e.getActionCommand()=="."){
if(!start){
s1.delete(0, s1.length());
}
start=true;
if(s1.toString().equals(new String()))//判断是否有
showresult.setText(s1.append("0.").toString());
else if(s1.length()==1&&s1.charAt(0)=='-')
showresult.setText(s1.append("0.").toString());
else
showresult.setText(s1.append(".").toString());
}
//输入负号
if(e.getActionCommand()=="+/-"){
if(!start){
s1.delete(0, s1.length());
}
start = true;
if(s1.toString().equals(new String()))
showresult.setText(s1.append('-').toString());
}
//退格Backspace
if(e.getActionCommand()=="Backspace"){
start = true;
if(s1.length()!=0){
//删除最后输入的一位
s1.deleteCharAt(s1.length()-1);
showresult.setText(s1.toString());
}
}
//归零CE
if(e.getActionCommand()=="CE"){
//清空所有,start标记设为true
start = true;
s1.delete(0, s1.length());
s2.delete(0, s2.length());
showresult.setText(s1.toString());
}
//清除C
if(e.getActionCommand()=="C"){
//清空当前输入,即s1清零
start = true;
s1.delete(0, s1.length());
showresult.setText(s1.toString());
}
//加号
if(e.getActionCommand()=="+"){
start = true;
flag="+";
//s2接收s1的值
s2.append(String.valueOf(s1.toString()));
//s1清零,重新接收下一个数据
s1.delete(0, s1.length());
showresult.setText(s1.toString());
}
//减号
if(e.getActionCommand()=="-"){
start = true;
flag="-";
s2.append(String.valueOf(s1.toString()));
s1.delete(0, s1.length());
showresult.setText(s1.toString());
}
//乘号
if(e.getActionCommand()=="*"){
start = true;
flag="*";
s2.append(String.valueOf(s1.toString()));
s1.delete(0, s1.length());
showresult.setText(s1.toString());
}
//除号
if(e.getActionCommand()=="/"){
start = true;
flag="/";
s2.append(String.valueOf(s1.toString()));
s1.delete(0, s1.length());
showresult.setText(s1.toString()); }
//开根号
if(e.getActionCommand()=="sqrt"){
start =false;
double s=Double.parseDouble(s1.toString());
s1.delete(0, s1.length());
showresult.setText(s1.append(String.valueOf(Math.sqrt(s))).toString()); }
//求%
if(e.getActionCommand()=="%"){
start =false;
double s=Double.parseDouble(s1.toString());
s1.delete(0, s1.length());
showresult.setText(s1.append(String.valueOf(s/100)).toString()); }
//求1/x
if(e.getActionCommand()=="1/x"&&!s1.toString().equals(new String())&&Double.parseDouble(s1.toString())!=0){
start =false;
double s=Double.parseDouble(s1.toString());
s1.delete(0, s1.length());
showresult.setText(s1.append(String.valueOf(1/s)).toString());}
//求结果
if(e.getActionCommand()=="="&&s1.length()!=0&&s2.length()!=0){
//start标记为false
start =false;
//分别获取s1和s2的值
double s4=Double.parseDouble(s1.toString());
double s3=Double.parseDouble(s2.toString());
//清空s1和s2,便于开始下一次运算
s1.delete(0, s1.length());
s2.delete(0, s2.length());
//四则运算
if(flag=="+"){
showresult.setText(s1.append(String.valueOf(s3+s4)).toString());}
if(flag=="-"){
showresult.setText(s1.append(String.valueOf(s3-s4)).toString()); }
if(flag=="*"){
showresult.setText(s1.append(String.valueOf(s3*s4)).toString());}
if(flag=="/"){
showresult.setText(s1.append(String.valueOf(s3/s4)).toString());}}} };

...全文
262 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
自信男孩 2017-12-25
  • 打赏
  • 举报
回复
应该在JAVA版块里提出这个问题,
Outsider1999 2017-12-24
  • 打赏
  • 举报
回复
//添加按钮以及监听器 JButton bks = new JButton("Backspace"); bks.addActionListener(listen); JButton ce = new JButton("CE"); ce.addActionListener(listen); JButton c = new JButton("C"); c.addActionListener(listen); p2.add(bks); p2.add(ce); p2.add(c); panelleft.add(p2,BorderLayout.CENTER); JPanel p3 = new JPanel(); p3.setLayout(new GridLayout(4,5)); JButton b1 = new JButton("7"); p3.add(b1); b1.addActionListener(listen); JButton b2 = new JButton("8"); p3.add(b2); b2.addActionListener(listen); JButton b3 = new JButton("9"); p3.add(b3); b3.addActionListener(listen); JButton b4 = new JButton("/"); p3.add(b4); b4.addActionListener(listen); JButton b5 = new JButton("sqrt"); p3.add(b5); b5.addActionListener(listen); JButton b6 = new JButton("4"); p3.add(b6); b6.addActionListener(listen); JButton b7 = new JButton("5"); p3.add(b7); b7.addActionListener(listen); JButton b8 = new JButton("6"); p3.add(b8); b8.addActionListener(listen); JButton b9 = new JButton("*"); p3.add(b9); b9.addActionListener(listen); JButton b10 = new JButton("%"); p3.add(b10); b10.addActionListener(listen); JButton b11 = new JButton("1"); p3.add(b11); b11.addActionListener(listen); JButton b12 = new JButton("2"); p3.add(b12); b12.addActionListener(listen); JButton b13 = new JButton("3"); p3.add(b13); b13.addActionListener(listen); JButton b14 = new JButton("-"); p3.add(b14); b14.addActionListener(listen); JButton b15 = new JButton("1/x"); p3.add(b15); b15.addActionListener(listen); JButton b16 = new JButton("0"); p3.add(b16); b16.addActionListener(listen); JButton b17 = new JButton("+/-"); p3.add(b17); b17.addActionListener(listen); JButton b18 = new JButton("."); p3.add(b18); b18.addActionListener(listen); JButton b19 = new JButton("+"); p3.add(b19); b19.addActionListener(listen); JButton b20 = new JButton("="); p3.add(b20); b20.addActionListener(listen); panelleft.add(p3,BorderLayout.SOUTH); JPanel panelright = new JPanel(); panelright.setLayout(new BorderLayout()); JTextArea allProcess = new JTextArea();//所有保存结果 allProcess.setEditable(false); panelright.add(allProcess,BorderLayout.CENTER); JTextField presentProcess = new JTextField(); presentProcess.setEditable(false); presentProcess.setHorizontalAlignment(JTextField.CENTER); panelright.add(presentProcess,BorderLayout.NORTH); JPanel btngroup = new JPanel(); JButton savebtn = new JButton("保存"); JButton clearbtn = new JButton("清空"); btngroup.add(savebtn); btngroup.add(clearbtn); panelright.add(btngroup,BorderLayout.SOUTH); JSplitPane split = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,panelleft,panelright); window.add(split,BorderLayout.CENTER); //window.add(panelleft); //window.add(panelright); window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); window.pack(); window.setVisible(true); } public class lal{ public static void main(String args[]){ //调用方法,实现计算器 //new Test().init(); Caculator cal = new Caculator(); cal.init() } }

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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