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);
} }麻烦大家帮我写下加法和等于
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);
} }麻烦大家帮我写下加法和等于
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();
}}
package calc;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;
String curData = "";
double opate1 = 0.0;
double opate2 = 0.0;
String calcType = null;
boolean appand = false;
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;
}
JButton bt = (JButton)temp;
String text = bt.getText();
//将按钮挨个转换为字符串
for(int i=0;i<jb.length;i++){
if(temp==jb[i] && enter==true){
//jtf.setText(jtf.getText() + Integer.toString(i));
jtf.setText(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进行事件
// **以下为运算事件
if("1234567890".indexOf(text) != -1){
setCurrentDate(text);
}else if("+-*/".indexOf(text) != -1){
claculate(calcType);
calcType = text;
appand = false;
} else if ("=".indexOf(text) != -1) {
claculate(calcType);
calcType = null;
curData = String.valueOf(opate1);
appand = false;
}else if(".".indexOf(text) != -1){
if(!curData.equals("") && curData.indexOf(".") == -1){
curData = curData + ".";
}
}else if("C".indexOf(text) != -1){
calcType = null;
curData = "";
opate1 = 0.0;
}
jtf.setText(curData);
} // 保存当前数据值
public void setCurrentDate(String _pValue){
if(_pValue != null && !_pValue.equals("")){
if(appand){
curData = curData + jtf.getText();
}else{
curData = jtf.getText();
}
appand = true;
}else{
curData = "";
}
}
public void claculate(String _pType){
if(_pType == null){
opate1 = Double.parseDouble(curData);
} else if (calcType.equals("+")) {
opate1 = opate1 + Double.parseDouble(curData);
} else if (calcType.equals("-")) {
opate1 = opate1 - Double.parseDouble(curData);
} else if (calcType.equals("*")) {
opate1 = opate1 * Double.parseDouble(curData);
} else if (calcType.equals("/")) {
opate1 = opate1 / Double.parseDouble(curData);
}
//curData = String.valueOf(opate1);
}
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);
} }
http://www.oschina.net/code/snippet_736932_13725