📄 jsuanq.java
字号:
/**
* @(#)JSuanQ.java
*
*
* @author
* @version 1.00 2007/8/10
*/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class JSuanQ extends JFrame {
private double toleft;
private boolean isPer=false;//是否输入"."
private boolean IsClick=false;//判断是否按下"="号.
private StringBuffer left=new StringBuffer(); //记录数据
private JButton[] button=new JButton[16];
private JButton Ce,Back;
private JLabel pass;
private int opp=5;//0:+,1:-,2:*,3:/ 5:不运算状态
private JTextField show;
public JSuanQ(String title) {
super(title);
show=new JTextField();
show.setHorizontalAlignment(JTextField.RIGHT);
JPanel panel =new JPanel();
JPanel ptop=new JPanel();
panel.setLayout(new GridLayout(4,4));
ptop.setLayout(new GridLayout(1,7));
show.setText("0");
show.setSize(250,50);
add(show,BorderLayout.NORTH);
add(panel,BorderLayout.CENTER);
Back=new JButton("Back");
Back.setForeground(Color.red);
Ce=new JButton("CE");
Ce.setForeground(Color.red);
pass=new JLabel();
pass.setText("**欢迎使用**");
pass.setBackground(Color.red);
ptop.add(pass);
ptop.add(Back);
ptop.add(Ce);
add(ptop,BorderLayout.SOUTH);
String[] num ={"7","8","9","+","4","5","6","-","1","2","3","*","0",".","=","/"};
for(int i=0;i<num.length;i++){
button[i]=new JButton(num[i]);
button[i].setForeground(Color.blue);
panel.add(button[i]);
}
for(int j=0;j<num.length;j++){
if(j%4!=3&&j!=14)
button[j].addActionListener(new numListener(num[j]));
if(j==3||j==7||j==11||j==15){
button[j].addActionListener(new operator());
button[j].setForeground(Color.RED);}
if(j==14)
button[j].addActionListener(new value());
}
Ce.addActionListener(new CeListener());
Back.addActionListener(new BackListener());
setSize(300,200);
setVisible(true);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
show.setEditable(false);
setResizable(false);
}
//数字键监听器
class numListener implements ActionListener{
private String str;
public numListener(String s){str=s;}
public void actionPerformed(ActionEvent evt){
if(str.equals(".")&&isPer==false){isPer=true;left.append(str);}
else
if(!str.equals(".")) left.append(str);
show.setText(left.toString());
}
}
//运算符监听器
class operator implements ActionListener{
public void actionPerformed(ActionEvent evt){
if(IsClick==true) {
left.delete(0,left.length());
left.append(new Double(toleft).toString());//如果连续按等号记录操作数的值
}
if(opp!=5)operation(opp);
else
toleft=left.toString().equals("")?0.0:Double.parseDouble(left.toString());
left.delete(0,left.length());
show.setText(left.toString());
if(evt.getSource()==button[3])opp=0;
if(evt.getSource()==button[7])opp=1;
if(evt.getSource()==button[11])opp=2;
if(evt.getSource()==button[15])opp=3;
isPer=false;
IsClick=false;
}
}
//"="号的监听器.
class value implements ActionListener{
private int X;//记录连续按"="号时的运算符
public void actionPerformed(ActionEvent evt){
operation(opp);
if(IsClick==false){X=opp;IsClick=true;
}
else operation(X);
show.setText(new Double(toleft).toString());
opp=5;
}
}
//归零
class CeListener implements ActionListener{
public void actionPerformed(ActionEvent evt){
left.delete(0,left.length());
toleft=0;
show.setText("0");
IsClick=false;
isPer=false;
opp=5;
}
}
class BackListener implements ActionListener{
public void actionPerformed(ActionEvent evt){
if(left.length()!=0)
left.deleteCharAt(left.length()-1);
show.setText(left.toString());
}
}
public void operation(int OP){
switch(OP){
case 0:toleft=toleft+Double.parseDouble(left.toString());break;
case 1:toleft=toleft-Double.parseDouble(left.toString());break;
case 2:toleft=toleft*Double.parseDouble(left.toString());break;
case 3:toleft=toleft/Double.parseDouble(left.toString());break;
}
}
public static void main (String[] args) {
new JSuanQ("计算器 ");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -