日期:2014-05-20 浏览次数:21297 次
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class Calculator {
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable(){
public void run(){
********************************MFrame f=new MFrame("Calculator");
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
});
}
}
class MFrame extends JFrame{
public MFrame(String title){
super(title);
setBounds(100,100,306,360);
this.setResizable(false);
setLayout(null);
TextField tf=new TextField();
tf.setLocation(20, 20);
tf.setSize(260,50);
this.add(tf);
Button bd[]=new Button[12];
String[]s={"7","8","9","/","4","5","6","*","1","2","3","-"};
int[]bdx=new int[4];
int[]bdy=new int[3];
for(int i=0;i<4;i++){
bdx[i]=20+70*i;//设置按钮的x轴坐标
}
for(int i=0;i<3;i++){
bdy[i]=80+70*i;//设置按钮的y轴坐标
}
for(int i=0;i<bd.length;i++){
for(int j=0;j<4;j++){
for(int k=0;k<3;k++){
****************************************bd[i].setBounds(bdx[j],bdy[k],50,50);//定义按钮的位置以及大小
bd[i].setName(s[i]);//定义按钮的名称
}
}
this.add(bd[i]);
}
}
}
class Monitor implements ActionListener{
public void actionPerformed(ActionEvent e) {
// TODO 自动生成方法存根
}
}
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at MFrame.<init>(Calculator.java:38) at Calculator$1.run(Calculator.java:8) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:251) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:705) at java.awt.EventQueue.access$000(EventQueue.java:101) at java.awt.EventQueue$3.run(EventQueue.java:666) at java.awt.EventQueue$3.run(EventQueue.java:664) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:675) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:211) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:128) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:117) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:113) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:105) at java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
//给你参考一下:
import java.awt.BorderLayout;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.*;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.JTextField;
import javax.swing.JButton;
public class Calc extends JFrame implements ActionListener {
private JPanel contentPane;
private JButton JBone = new JButton("1");
private JButton JBtwo = new JButton("2");
private JButton JBthree = new JButton("3");
private JButton JBfour = new JButton("4");
private JButton JBfive = new JButton("5");
private JButton JBsix = new JButton("6");
private JButton JBseven = new JButton("7");
private JButton JBeight = new JButton("8");
private JButton JBnight = new JButton("9");
private JButton JBzero = new JButton("0");
private JButton JBpoint = new JButton(".");
private JButton JBadd = new JButton("+");
private JButton JBmultiply = new JButton("*");
private JButton JBdivide = new JButton("/");
private JButton JBsubtract = new JButton("-");
private JButton JBequals = new JButton("=");
private JButton JBdbzero = new JButton("00");
private String tempOperand1 = null; //增加全局变量增加全局变量增加全局变量增加全局变量
private String tempOperand2 = null;
private JTextField tf = new JTextField();// 显示框
private JButton JBclear = new JButton("清零");
boolean add = false, substract = false, multiply = false, divide = false;
public Calc() {
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setBounds(100, 100, 369, 448);
setTitle("JAVA版计算器");
contentPane = new JPanel();
contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
contentPane.setLayout(null);
setContentPane(contentPane);
tf.setBounds(10, 10, 333, 34);
contentPane.add(tf);
tf.setColumns(10);
tf.setEditable(false);
JBone.setBounds(30, 283, 52, 42);// 数字1
contentPane.add(JBone);
JBone.addActionListener(this);
JBtwo.setBounds(92, 283, 52, 42);// 数字2
contentPane.add(JBtwo);
JBtwo.addActionListener(this);
JBthree.setBounds(154, 283, 52, 42);// 数字3
contentPane.add(JBthree);
JBthree.addActionListener(this);
JBfour.setBounds(30, 231, 52, 42);// 数字4
contentPane.add(JBfour);
JBfour.addActionListener(this);
JBfive.setBounds(92, 231, 52, 42);// 数字5
contentPane.add(JBfive);
JBfive.addActionListener(this);
JBsix.setBounds(154, 231, 52, 42);// 数字6
contentPane.add(JBsix);
JBsix.addActionListener(this);
JBseven.setBounds(30, 179, 52, 42);// 数字7
contentPane.add(JBseven);
JBseven.addActionListener(this);
JBeight.setBounds(92, 179, 52, 42);// 数字8
contentPane.add(JBeight);
JBeight.addActionListener(this);
JBnight.setBounds(154, 179, 52, 42);// 数字9
contentPane.add(JBnight);
JBnight.addActionListener(this);
JBzero.setBounds(30, 343, 52, 42);// 数字0
contentPane.add(JBzero);
JBzero.addActionListener(this);
JBpoint.setBounds(92, 343, 52, 42);// 按钮.
contentPane.add(JBpoint);
JBpoint.addActionListener(this);
JBadd.setBounds(221, 283, 52, 102);// 按钮+
contentPane.add(JBadd);
JBadd.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
add = true;
tempOperand1 = tf.getText().trim();
tf.setText("");
}
});
JBmultiply.setBounds(221, 231, 52, 42);// 按钮*
contentPane.add(JBmultiply);
JBmultiply.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
multiply = true;
tempOperand1 = tf.getText().trim();
tf.setText("");
}
});
JBdivide.setBounds(283, 231, 52, 42);// 按钮/
contentPane.add(JBdivide);
JBdivide.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
divide = true;
tempOperand1 = tf.getText().trim();
tf.setText("");
}
});
JBsubtract.setBounds(283, 283, 52, 42);// 按钮-
contentPane.add(JBsubtract);
JBsubtract.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
substract = true;
tempOperand1 = tf.getText().trim();
tf.setText("");
}
});
JBequals.setBounds(283, 343, 52, 42);// 按钮=
contentPane.add(JBequals);
JBequals.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
tempOperand2 = tf.getText().trim();
;
double operand1 = Double.parseDouble(tempOperand1);// 既然都有小数点了,就干脆用Double型把
double operand2 = Double.parseDouble(tempOperand2);
double result = 0;
if (add) {
result = operand1 + operand2;
add = false;
}
if (substract) {
result = operand1 - operand2;
substract = false;
}
if (multiply) {
result = operand1 * operand2;
multiply = false;
}
if (divide) {
result = operand1 / operand2;
divide = false;
}
tf.setText(result + "");
tempOperand1 = null;
tempOperand2 = null;
}
});
JBdbzero.setBounds(154, 343, 52, 42);// 按钮00 ////干嘛用的???????????????
contentPane.add(JBdbzero);
JBdbzero.addActionListener(this);//是不是想添加正负号??????
JBclear.setBounds(270, 179, 65, 42);
contentPane.add(JBclear);
JBclear.addActionListener(this);
}
public void actionPerformed(ActionEvent e) {
String m = null;
m = tf.getText().toString();
if (e.getSource() == JBone) {
m += "1";
tf.setText(m);
} else if (e.getSource() == JBtwo) {
m += "2";
tf.setText(m);
} else if (e.getSource() == JBthree) {
m += "3";
tf.setText(m);
} else if (e.getSource() == JBfour) {
m += "4";
tf.setText(m);
} else if (e.getSource() == JBfive) {
m += "5";
tf.setText(m);
} else if (e.getSource() == JBsix) {
m += "6";
tf.setText(m);
} else if (e.getSource() == JBseven) {
m += "7";
tf.setText(m);
} else if (e.getSource() == JBeight) {
m += "8";
tf.setText(m);
} else if (e.getSource() == JBnight) {
m += "9";
tf.setText(m);
} else if (e.getSource() == JBdbzero) {
m += "00";
tf.setText(m);
} else if (e.getSource() == JBpoint) {
m += ".";
tf.setText(m);
} else if (e.getSource() == JBclear) {
tf.setText("");
}
}
public static void main(String[] args) {
EventQueue.invokeLater(new Runnable() {
public void run() {
try {
Calc frame = new Calc();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}