package caculatot;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;public class MyCalculater extends JFrame implements ActionListener{private static final long serialVersionUID = 1L;//不管他
JPanel mainpanel = new JPanel(); //主面板
JPanel centerpanel = new JPanel(); //中心面板
JTextField txt = new JTextField(""); //主显示区
StringBuffer sb1 = new StringBuffer(); //参数一
StringBuffer sb2 = new StringBuffer(); //参数二
char sign;boolean flag = false;JButton[] buttons = new JButton[16];
{
buttons[0] = new JButton("1");
buttons[1] = new JButton("2");
buttons[2] = new JButton("3");
buttons[3] = new JButton("+");
buttons[4] = new JButton("4");
buttons[5] = new JButton("5");
buttons[6] = new JButton("6");
buttons[7] = new JButton("-");
buttons[8] = new JButton("7");
buttons[9] = new JButton("8");
buttons[10] = new JButton("9");
buttons[11] = new JButton("*");
buttons[12] = new JButton("0");
buttons[13] = new JButton("c");
buttons[14] = new JButton("=");
buttons[15] = new JButton("/");
}
{
centerpanel.setLayout(new GridLayout(4,4,8,8));
for (int i = 0; i < buttons.length; i++) {
centerpanel.add(buttons[i]);
buttons[i].addActionListener(this);
}
}public MyCalculater(int x,int y) {
this.setTitle("我的计算器");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setContentPane(mainpanel);
this.setResizable(false);
BorderLayout bl = new BorderLayout();
mainpanel.setLayout(bl);
mainpanel.add(txt,BorderLayout.NORTH);
mainpanel.add(centerpanel,BorderLayout.CENTER);
this.setBounds(x,y, 300, 240);
this.setVisible(true);
}
public static void main(String[] args) {
new MyCalculater(750, 200);}
@Override
public void actionPerformed(ActionEvent e) {
JButton jb = (JButton)e.getSource();
char c = jb.getText().charAt(0);
switch(c){
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':{
addNum(c);
break;
}
case '+':
case '-':
case '*':
case '/':{
signEvent(c);
break;
}
case 'c':{
MyCalculater.this.dispose();
new MyCalculater(MyCalculater.this.getLocation().x,MyCalculater.this.getLocation().y);
break;
}
case '=':{
if(!flag)this.txt.setText(sb1.toString());;
sb1 = new StringBuffer(getAnswer());
sb2 = new StringBuffer();
this.txt.setText(sb1.toString());
sign = '=';
flag = false;
break;
}
default: break;
}
}
private void signEvent(char c) {
if(flag&&sb2.length()!=0){
sb1 = new StringBuffer(""+getAnswer());
this.txt.setText(sb1.toString());
}
else {
flag = !flag;
this.txt.setText("");
}
this.sign = c;
}
private String getAnswer() {
double a = 0;
if(sb1.length()!=0)
a = Double.parseDouble(sb1.toString());
double b = 0;
if(sb2.length()!=0)
b = Double.parseDouble(sb2.toString());
double answer = 0;
switch(sign){
case '+':
answer = a+b;
this.txt.setText("");
break;
case '-':
answer = a-b;
this.txt.setText("");
break;
case '*':
answer = a*b;
this.txt.setText("");
break;
case '/':
answer = a/b;
this.txt.setText("");
break;
default :
return null;
}
this.sb1 = new StringBuffer("");
this.sb2 = new StringBuffer("");
return ""+answer;
}
private void addNum(char c) {
if(!flag){
sb1.append(c);
this.txt.setText(sb1.toString());
}
else {
sb2.append(c);
this.txt.setText(sb2.toString());
}}
}
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;public class MyCalculater extends JFrame implements ActionListener{private static final long serialVersionUID = 1L;//不管他
JPanel mainpanel = new JPanel(); //主面板
JPanel centerpanel = new JPanel(); //中心面板
JTextField txt = new JTextField(""); //主显示区
StringBuffer sb1 = new StringBuffer(); //参数一
StringBuffer sb2 = new StringBuffer(); //参数二
char sign;boolean flag = false;JButton[] buttons = new JButton[16];
{
buttons[0] = new JButton("1");
buttons[1] = new JButton("2");
buttons[2] = new JButton("3");
buttons[3] = new JButton("+");
buttons[4] = new JButton("4");
buttons[5] = new JButton("5");
buttons[6] = new JButton("6");
buttons[7] = new JButton("-");
buttons[8] = new JButton("7");
buttons[9] = new JButton("8");
buttons[10] = new JButton("9");
buttons[11] = new JButton("*");
buttons[12] = new JButton("0");
buttons[13] = new JButton("c");
buttons[14] = new JButton("=");
buttons[15] = new JButton("/");
}
{
centerpanel.setLayout(new GridLayout(4,4,8,8));
for (int i = 0; i < buttons.length; i++) {
centerpanel.add(buttons[i]);
buttons[i].addActionListener(this);
}
}public MyCalculater(int x,int y) {
this.setTitle("我的计算器");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setContentPane(mainpanel);
this.setResizable(false);
BorderLayout bl = new BorderLayout();
mainpanel.setLayout(bl);
mainpanel.add(txt,BorderLayout.NORTH);
mainpanel.add(centerpanel,BorderLayout.CENTER);
this.setBounds(x,y, 300, 240);
this.setVisible(true);
}
public static void main(String[] args) {
new MyCalculater(750, 200);}
@Override
public void actionPerformed(ActionEvent e) {
JButton jb = (JButton)e.getSource();
char c = jb.getText().charAt(0);
switch(c){
case '0':
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':{
addNum(c);
break;
}
case '+':
case '-':
case '*':
case '/':{
signEvent(c);
break;
}
case 'c':{
MyCalculater.this.dispose();
new MyCalculater(MyCalculater.this.getLocation().x,MyCalculater.this.getLocation().y);
break;
}
case '=':{
if(!flag)this.txt.setText(sb1.toString());;
sb1 = new StringBuffer(getAnswer());
sb2 = new StringBuffer();
this.txt.setText(sb1.toString());
sign = '=';
flag = false;
break;
}
default: break;
}
}
private void signEvent(char c) {
if(flag&&sb2.length()!=0){
sb1 = new StringBuffer(""+getAnswer());
this.txt.setText(sb1.toString());
}
else {
flag = !flag;
this.txt.setText("");
}
this.sign = c;
}
private String getAnswer() {
double a = 0;
if(sb1.length()!=0)
a = Double.parseDouble(sb1.toString());
double b = 0;
if(sb2.length()!=0)
b = Double.parseDouble(sb2.toString());
double answer = 0;
switch(sign){
case '+':
answer = a+b;
this.txt.setText("");
break;
case '-':
answer = a-b;
this.txt.setText("");
break;
case '*':
answer = a*b;
this.txt.setText("");
break;
case '/':
answer = a/b;
this.txt.setText("");
break;
default :
return null;
}
this.sb1 = new StringBuffer("");
this.sb2 = new StringBuffer("");
return ""+answer;
}
private void addNum(char c) {
if(!flag){
sb1.append(c);
this.txt.setText(sb1.toString());
}
else {
sb2.append(c);
this.txt.setText(sb2.toString());
}}
}
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货