colorful的java计算器
一个能实现简单加减乘除的简单计算器
讲解:使用super();与this();与方法的重载的简易代码。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Mycalutor extends JFrame{
public double num1=0,num2=0;
public int i=0;
double result=0;
public String bufferString ="";
public String operString ="";
public final String[] KEYS = {"+","-","*","/","1","2","3","0","4","5","6","C","7","8","9","="};
private JButton key1[]= new JButton[KEYS.length];
private JTextField resultText =new JTextField("0",15);
public Mycalutor() {//构造函数
super();//初始化父类JFrame的方法
init();//重载方法
this.setTitle("我的超级拽酷计算器!!");//书上136页上JFrame的第四个方法
this.setResizable(true);//不允许改变计算器窗口大小
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//使用 System exit 方法退出应用程序。仅在应用程序中使用。用这个就不用注册窗口的监听器
this.pack();//自动调节各个组件的大小;
}
public void init() {
resultText.setHorizontalAlignment(JTextField.RIGHT);//设置文本框水平向左对齐
resultText.setEditable(true);//是文本框不可调节
resultText.setBackground(Color.green);//设置文本框背景为黄色
JPanel keys = new JPanel();
keys.setLayout(new GridLayout(4,4,3,3));//将按键的布局设置为4行4列,横竖间隔三个单位
for(int i=0;i<16;i++) {
key1[i] = new JButton(KEYS[i]);
keys.add(key1[i]);
key1[i].setForeground(Color.ORANGE);
key1[i].setVisible(true);
}//利用for循环添加按键并设置按键颜色
keys.setBackground(Color.pink);//让按键布局的背景为粉色
JPanel panel2=new JPanel();
panel2.add(resultText);
panel2.setBackground(Color.green);
getContentPane().setLayout(new BorderLayout());
getContentPane().add("North",panel2);
getContentPane().add("South",keys);//将按键与文本框两个布局添加到一个布局里去,利用borderlayout的方法把文本框放到上边,按键放到下边
NumberAdapter Na= new NumberAdapter();
ResetAdapter RA =new ResetAdapter();
OperAdapter OA =new OperAdapter();//初始化三种功能的按钮
for (i = 0; i < 16; i++) {
if(i==5||i==6||i==7||i==8||i==9||i==10||i ==13||i==14||i==4||i==12)
{key1[i].addActionListener(Na);
}
else if(i==11) {
key1[i].addActionListener(RA);
}
else if(i==0||i==2||i==3||i==1||i==15){
key1[i].addActionListener(OA);
}//为每个按键添加监听器
}}
class NumberAdapter implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JButton button = (JButton)e.getSource();
if(bufferString.equals("0") && button.getLabel().equals("0")){
//当第一个输入为0时,不进行操作
}else{
bufferString += button.getLabel();
resultText.setText(bufferString);
}
}//处理数字类的按钮
}
class ResetAdapter implements ActionListener{
public void actionPerformed(ActionEvent e) {
resultText.setText("0");
num1 = 0;
num2 = 0;
result = 0;
bufferString = "";
operString = "";
}
}//c的重置键
class OperAdapter implements ActionListener{
public void actionPerformed(ActionEvent e) {
JButton b = (JButton)e.getSource();
if(b.getLabel().equals("+")){
operString = "+";
num1 = Integer.parseInt( resultText.getText());
resultText.setText("0");
bufferString = "";
} else if (b.getLabel().equals("-")){
operString = "-";
num1 = Integer.parseInt( resultText.getText());
resultText.setText("0");
bufferString = "";
} else if(b.getLabel().equals("*")){
operString = "*";
num1 = Integer.parseInt( resultText.getText());
resultText.setText("0");
bufferString = "";
} else if(b.getLabel().equals("/")){
operString = "/";
num1 = Integer.parseInt( resultText.getText());
resultText.setText("0");
bufferString = "";
} else{
num2 = Integer.parseInt( resultText.getText());
if(operString == "+"){
result = num1 + num2;
} else if(operString == "-"){
result = num1 - num2;
} else if(operString == "*"){
result = num1 * num2;
} else if(operString == "/"){
if(0 == num2){
new JOptionPane().showMessageDialog(null, "除数不能为0!");
}else{
result = num1 / num2;
}
}
bufferString = Double.toString(result);
resultText.setText(bufferString);
}
}
}//加减乘除按键的操作
};