jisuanqi.java
来自「简单使用coreJAVA实现的简单的计算器」· Java 代码 · 共 119 行
JAVA
119 行
package 接口使用;
//计算器面向对象的方法
/**
* 按运算符;把文本框中的数字保存,文本框清空,把运算符保存下来
* 按=号先把文本框中数子保存把保存的运算符和数字来运行算
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class JiSuanQi implements ActionListener {
private JFrame frame;
private JTextField field;
private JButton clear;
private JButton[] allButtons;
//全局变量
private double number1=0.0,number2=0.0;
private char operator;//代表运算符
public JiSuanQi (){
frame=new JFrame("计算器v1.1");
field=new JTextField(20);
clear=new JButton("c");
allButtons=new JButton[16];
String str="123+456-789*0.=/";
for(int i=0;i<allButtons.length;i++){
allButtons[i]=new JButton(str.charAt(i)+"");
}
init();
addEvnentHandler();
//setColor();
}
private void setColor(){
for(int i=0;i<allButtons.length;i++){
allButtons[i].setBackground(i%2==0?Color.BLUE:Color.RED);
}
}
private void init(){
JPanel north=new JPanel();
JPanel center=new JPanel();
north.setLayout(new FlowLayout());
center.setLayout(new GridLayout(4,4));
north.add(field);
north.add(clear);
for(int i=0;i<allButtons.length;i++){
center.add(allButtons[i]);
}
frame.setLayout(new BorderLayout());
frame.add(north,BorderLayout.NORTH);
frame.add(center,BorderLayout.CENTER);
}
private void addEvnentHandler(){
for(int i=0;i<allButtons.length;i++){
allButtons[i].addActionListener(this);
}
clear.addActionListener(this);
}
public void showMe(){
frame.pack();
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE );
}
public static void main(String[] args){
new JiSuanQi().showMe();
}
@Override
public void actionPerformed(ActionEvent e) {
String str=e.getActionCommand().trim();//的到文本内容
//判断str字符是不是数字字符
if("0123456789.".indexOf(str)!=-1){//调用String的indexOf方法
// String n1=""+number1+str;
// number1=Double.parseDouble(n1);
field.setText(field.getText()+str);
return;
}
// 等价于下面的
// if('0'<=str.charAt(0)&& str.charAt(0)<='9'){
//
// }
if("+-*/".indexOf(str)!=-1){
number1=Double.parseDouble(field.getText());//field.getText()文本框中拿到的值
field.setText("");//文本框清空
operator=str.charAt(0);
return;
}
if(str.equals("=")){
number2=Double.parseDouble(field.getText());
double result=0.0;
switch(operator){
case'+':result=number1+number2;break;
case'-':result=number1-number2;break;
case'*':result=number1*number2;break;
case'/':result=number1/number2;break;
}
field.setText(result+"");
return;
}
if(str.equals("c")){
number1=0.0;
number2=0.0;
operator='\u0000';
field.setText("");
return;
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?