计算器的一个代码 运算不会写了
- Java code
package CalcTest;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.FlowLayout;import java.awt.Font;import java.awt.GridLayout;import java.awt.ScrollPane;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JScrollPane;import javax.swing.JTextArea;import javax.swing.JTextField;import javax.swing.text.StyleConstants;import javax.swing.text.StyleContext;import org.w3c.dom.Text;import com.sun.org.apache.bcel.internal.generic.JsrInstruction;public class Calc extends JFrame implements ActionListener{ public final int temp = 8;//定义文本框最多输入字符 String copy; boolean enter; double d1,d2; JPanel ButtonPanel,okPanel; JButton jb[]; JTextField jtf; JScrollPane jsp; JButton jia,jian,cheng,chu,dian,dengyu; JMenuBar jmb; JMenu bjM,ckM,bzM; JTextArea jta; JMenuItem copyM,pasteM,closeM,helpM,gyM; JButton b1; boolean start; public Calc(){ enter = true; start =true; Container c = getContentPane(); //**以下为菜单之类的 jmb = new JMenuBar(); bjM = new JMenu("编辑(E)"); ckM = new JMenu("查看(V)"); bzM = new JMenu("帮助(H)"); copyM = new JMenuItem("复制(C)"); pasteM = new JMenuItem("粘贴(V)"); closeM = new JMenuItem("关闭(E)"); helpM = new JMenuItem("帮助主题"); gyM = new JMenuItem("关于计算器"); jmb.add(bjM); jmb.add(ckM); jmb.add(bzM); bjM.add(copyM); bjM.add(pasteM); ckM.add(closeM); bzM.add(helpM); bzM.add(gyM); setJMenuBar(jmb);//显示菜单条 //**以上为菜单类的 //**以下注册菜单监听器 copyM.addActionListener(this); pasteM.addActionListener(this); closeM.addActionListener(this); helpM.addActionListener(this); gyM.addActionListener(this); //**以上注册菜单监听器 jtf = new JTextField(35); jtf.setText("0."); jtf.setEditable(false); jtf.setComponentOrientation(java.awt.ComponentOrientation.RIGHT_TO_LEFT);//设置文本框从右往左 //**以下为按钮设置 jb = new JButton[10]; jia = new JButton("+"); jian = new JButton("-"); cheng = new JButton("*"); chu = new JButton("\\"); dian = new JButton("."); dengyu = new JButton("="); jia.addActionListener(this); jian.addActionListener(this); cheng.addActionListener(this); chu.addActionListener(this); dian.addActionListener(this); dengyu.addActionListener(this); ButtonPanel = new JPanel(); for(int i=0;i<jb.length;i++){ jb[i] = new JButton(Integer.toString(i));//实现将整形转字符串 jb[i].setForeground(new Color(99,00,00)); jb[i].addActionListener(Calc.this);//为每个按钮注册监听器 } ButtonPanel.setLayout(new GridLayout(4,4));//设置格子布局4行4列 ButtonPanel.add(jb[1]); ButtonPanel.add(jb[2]); ButtonPanel.add(jb[3]); ButtonPanel.add(jia); ButtonPanel.add(jb[4]); ButtonPanel.add(jb[5]); ButtonPanel.add(jb[6]); ButtonPanel.add(jian); ButtonPanel.add(jb[7]); ButtonPanel.add(jb[8]); ButtonPanel.add(jb[9]); ButtonPanel.add(cheng); ButtonPanel.add(jb[0]); ButtonPanel.add(dian); ButtonPanel.add(dengyu); ButtonPanel.add(chu); //**以上为按钮设置 //**以下为帮助主题 jta = new JTextArea(5,10); jsp = new JScrollPane(jta); jta.setEditable(false); jta.setFont(new Font("楷体",Font.BOLD,20)); jta.append("执行简单计算\n"); jta.append("1. 键入计算的第一个数字。\n"); jta.append("2. 单击“+”执行加、“-”执行减、“*”执行乘或“/”执行除。\n"); jta.append("3. 键入计算的下一个数字。\n"); jta.append("4. 输入所有剩余的运算符和数字。\n"); jta.append("5. 单击“=”。\n"); //**以上为帮助主题 //**以下为清零 okPanel = new JPanel(); b1 = new JButton("C"); okPanel.add(b1); //**以上为清零 b1.addActionListener(this);//注册监听器 c.add(jtf,BorderLayout.NORTH); c.add(ButtonPanel,BorderLayout.CENTER); c.add(okPanel,BorderLayout.SOUTH); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void actionPerformed(ActionEvent e) { Object temp = e.getSource(); String input = e.getActionCommand(); System.out.println(input); if(start){ jtf.setText("");//按下按钮的一瞬间清空 start = false; } jtf.setText(jtf.getText()); //将按钮挨个转换为字符串 for(int i=0;i<jb.length;i++){ if(temp==jb[i] && enter==true){ jtf.setText(jtf.getText() + Integer.toString(i)); } } //**以下为MemuItem进行事件 if(temp==copyM){ copy = jtf.getText(); } if(temp==pasteM){ jtf.setText(copy); } if(temp==closeM){ dispose(); System.exit(0); } if(temp==gyM){ //JOptionPane.showMessageDialog(gyM,jsp); JOptionPane.showMessageDialog(gyM, jsp); } if(temp == helpM){ JOptionPane.showMessageDialog(helpM,"使用“计算器”可以完成任意的通常借助手持计算器来完成的标准运算。 \n “计算器”可用于基本的算术运算,比如加减运算等。 \n 同时它还具有科学计算器的功能,比如对数运算和阶乘运算等。"); } //**以上为MemuItem进行事件 } public static void main(String[] args) { Calc cc = new Calc(); cc.setTitle("计算器 v1.0"); cc.setSize(400, 400); cc.setBounds(300, 300, 300, 300); cc.setVisible(true); } }
麻烦大家帮我写下加法和等于
[解决办法]
参考一下
- Java code
import javax.swing.JFrame;import javax.swing.JButton;import javax.swing.JPanel;import javax.swing.JTextField;import java.awt.GridLayout;import java.awt.BorderLayout;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class TestJiSuanQi implements ActionListener{ private String op1 = "0";//运算数 private String operator = "+";//运算符 private boolean append = false; JTextField jtf = new JTextField("",10); public void actionPerformed(ActionEvent ae) { String comm = ae.getActionCommand(); if("0123456789".indexOf(comm)!=-1){ if(append){ String temp = jtf.getText(); jtf.setText(temp+comm); }else{ jtf.setText(comm); append = true; } }else if(("+-*/".indexOf(comm)!=-1)){ //保存第一个数和运算符,状态转换 op1 = jtf.getText();//op1第一个数 operator = comm; append = false; }else if("=".equals(comm)){ String op2 = jtf.getText();//op2第二个数 double d1 = Double.parseDouble(op1); double d2 = Double.parseDouble(op2); if(operator.equals("+")){ d1 = d1 + d2 ; }else if(operator.equals("-")){ d1 = d1 - d2; }else if(operator.equals("*")){ d1 = d1 * d2; }else { d1 = d1 / d2; } jtf.setText(d1+""); append = false; }else if(".".equals(comm)){ String temp = jtf.getText(); if(temp.indexOf(".")==-1){ jtf.setText(temp+"."); append = true; } } else if("+/-".equals(comm)){ String temp = jtf.getText(); if(temp.startsWith("-")){ jtf.setText(temp.substring(1)); }else{ jtf.setText("-"+temp); } append = true; } else if("C".equals(comm) || "CE".equals(comm)){ jtf.setText("0"); append = false; }else if("Back".equals(comm)){ String temp = jtf.getText(); if(temp.length()>0){ temp = temp.substring(0,temp.length()-1); jtf.setText(temp); } } } public TestJiSuanQi(){ JFrame jf = new JFrame("计算器"); JPanel jp = new JPanel(); jp.setLayout(new GridLayout(5,4)); String[] label = {"Back","CE","C","+","7","8","9","-","4","5","6","*","1","2","3","/","0","+/-",".","="}; JButton[] jb = new JButton[label.length]; for(int i=0;i<jb.length;i++){ jb[i] = new JButton(label[i]); jb[i].addActionListener(this); jp.add(jb[i]); } jf.add(jp); jf.add(jtf,BorderLayout.NORTH); jf.setLocation(300,200);//设计出现的位置 jf.setSize(300,200); jf.setVisible(true); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public static void main(String[] args) { new TestJiSuanQi(); }}