📄 experiment6.java
字号:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Experiment6 extends WindowAdapter implements ActionListener{
int w=0,u=0;
double a=0.0,c=0.0,d=0;
JFrame f;
JTextField tf;
JPanel pl,p2;
JLabel l;
JButton b[]=new JButton[25];
GridLayout grid;
public void display(){
f=new JFrame("计算器");
f.setSize(400,350);
f.setLocation(300,300);
f.setBackground(Color.lightGray);
tf=new JTextField(30);
tf.setHorizontalAlignment(JTextField.RIGHT);
tf.setEditable(false);
l=new JLabel(" ***************** ******************** ***************");
p2=new JPanel();
p2.setLayout(new GridLayout(3,1));
p2.add(l);
p2.add(tf);
f.getContentPane().add(p2,"North");
pl=new JPanel();
grid=new GridLayout(5,5);
pl.setLayout(grid);
f.getContentPane().add(pl);
b[0]=new JButton("7");
b[1]=new JButton("8");
b[2]=new JButton("9");
b[3]=new JButton("/");
b[4]=new JButton("sqrt");
b[5]=new JButton("4");
b[6]=new JButton("5");
b[7]=new JButton("6");
b[8]=new JButton("*");
b[9]=new JButton("%");
b[10]=new JButton("1");
b[11]=new JButton("2");
b[12]=new JButton("3");
b[13]=new JButton("-");
b[14]=new JButton("1/x");
b[15]=new JButton("0");
b[16]=new JButton("+/-");
b[17]=new JButton(".");
b[18]=new JButton("+");
b[19]=new JButton("=");
b[20]=new JButton("退格");
b[21]=new JButton("C");
b[22]=new JButton("MC");
b[23]=new JButton("ME");
b[24]=new JButton("MR");
for(int i=0;i<25;i++){
b[i].setBackground(Color.green);
b[i].setForeground(Color.blue);
}
pl.add(b[0]);
pl.add(b[1]);
pl.add(b[2]);
pl.add(b[3]);
pl.add(b[4]);
pl.add(b[5]);
pl.add(b[6]);
pl.add(b[7]);
pl.add(b[8]);
pl.add(b[9]);
pl.add(b[10]);
pl.add(b[11]);
pl.add(b[12]);
pl.add(b[13]);
pl.add(b[14]);
pl.add(b[15]);
pl.add(b[16]);
pl.add(b[17]);
pl.add(b[18]);
pl.add(b[19]);
pl.add(b[20]);
pl.add(b[21]);
pl.add(b[22]);
pl.add(b[23]);
pl.add(b[24]);
b[0].addActionListener(this);
b[1].addActionListener(this);
b[2].addActionListener(this);
b[3].addActionListener(this);
b[4].addActionListener(this);
b[5].addActionListener(this);
b[6].addActionListener(this);
b[7].addActionListener(this);
b[8].addActionListener(this);
b[9].addActionListener(this);
b[10].addActionListener(this);
b[11].addActionListener(this);
b[12].addActionListener(this);
b[13].addActionListener(this);
b[14].addActionListener(this);
b[15].addActionListener(this);
b[16].addActionListener(this);
b[17].addActionListener(this);
b[18].addActionListener(this);
b[19].addActionListener(this);
b[20].addActionListener(this);
b[21].addActionListener(this);
b[22].addActionListener(this);
b[23].addActionListener(this);
b[24].addActionListener(this);
f.addWindowListener(this);
f.setVisible(true);
}
public void windowClosing(WindowEvent e){
System.exit(0);
}
public void actionPerformed(ActionEvent e){
if((e.getSource()==b[0])|(e.getSource()==b[1])|(e.getSource()==b[2])|(e.getSource()==b[5])|(e.getSource()==b[6])|(e.getSource()==b[7])|(e.getSource()==b[10])|(e.getSource()==b[11])|(e.getSource()==b[12])|(e.getSource()==b[15])){
if(u==1){
tf.setText("");
u=0;
}
tf.setText(tf.getText()+e.getActionCommand()); //显示数字
}
if(e.getSource()==b[21]){ //清空
tf.setText("");
}
if(e.getSource()==b[17]){ //显示小数点
int r=0;
if(r==0){
tf.setText(tf.getText()+e.getActionCommand());
r=1;
}
else{
tf.setText(tf.getText());
}
}
if(e.getSource()==b[20]){ //退格
String str=tf.getText();
if(str.length()!=0){
str=str.substring(0,str.length()-1);
tf.setText(str);
}
}
if(e.getSource()==b[16]){ //显示正负号
a=Double.parseDouble(tf.getText());
if(a>0.0){
a=-a;
tf.setText(Double.toString(a));
}
else{
tf.setText(Double.toString(-a));
}
}
if(e.getSource()==b[14]){ // "1/x"
a=1/Double.parseDouble(tf.getText());
tf.setText(Double.toString(a));
}
if(e.getSource()==b[4]){ //"sqrt()"
a=Math.sqrt(Double.parseDouble(tf.getText()));
tf.setText(Double.toString(a));
}
if(w==0){ //数字算法
if(e.getSource()==b[18]){ //+
a=Double.parseDouble(tf.getText());
w=1;
tf.setText("");
}
if(e.getSource()==b[13]){ //"-"
a=Double.parseDouble(tf.getText());
w=2;
tf.setText("");
}
if(e.getSource()==b[8]){ //"*"
a=Double.parseDouble(tf.getText());
w=3;
tf.setText("");
}
if(e.getSource()==b[3]){ //"/"
a=Double.parseDouble(tf.getText());
w=4;
tf.setText("");
}
if(e.getSource()==b[9]){ //" %"
a=Double.parseDouble(tf.getText());
w=5;
tf.setText("");
}
}
else{
if(e.getSource()==b[18]){
switch(w){
case 1:a=a+Double.parseDouble(tf.getText());break;
case 2:a=a-Double.parseDouble(tf.getText());break;
case 3:a=a*Double.parseDouble(tf.getText());break;
case 4:a=a/Double.parseDouble(tf.getText());break;
case 5:a=a%Double.parseDouble(tf.getText());break;
}
w=1;
tf.setText("");
}
if(e.getSource()==b[13]){
switch(w){
case 1:a=a+Double.parseDouble(tf.getText());break;
case 2:a=a-Double.parseDouble(tf.getText());break;
case 3:a=a*Double.parseDouble(tf.getText());break;
case 4:a=a/Double.parseDouble(tf.getText());break;
case 5:a=a%Double.parseDouble(tf.getText());break;
}
w=2;
tf.setText("");
}
if(e.getSource()==b[8]){
switch(w){
case 1:a=a+Double.parseDouble(tf.getText());break;
case 2:a=a-Double.parseDouble(tf.getText());break;
case 3:a=a*Double.parseDouble(tf.getText());break;
case 4:a=a/Double.parseDouble(tf.getText());break;
case 5:a=a%Double.parseDouble(tf.getText());break;
}
w=3;
tf.setText("");
}
if(e.getSource()==b[3]){
switch(w){
case 1:a=a+Double.parseDouble(tf.getText());break;
case 2:a=a-Double.parseDouble(tf.getText());break;
case 3:a=a*Double.parseDouble(tf.getText());break;
case 4:a=a/Double.parseDouble(tf.getText());break;
case 5:a=a%Double.parseDouble(tf.getText());break;
}
w=4;
tf.setText("");
}
if(e.getSource()==b[9]){
switch(w){
case 1:a=a+Double.parseDouble(tf.getText());break;
case 2:a=a-Double.parseDouble(tf.getText());break;
case 3:a=a*Double.parseDouble(tf.getText());break;
case 4:a=a/Double.parseDouble(tf.getText());break;
case 5:a=a%Double.parseDouble(tf.getText());break;
}
w=5;
tf.setText("");
}
if(e.getSource()==b[19]){
c=Double.parseDouble(tf.getText());
int i=0;
switch(w){
case 0:tf.setText(tf.getText());break;
case 1:a=a+c;tf.setText(Double.toString(a));break;
case 2:a=a-c;tf.setText(Double.toString(a));break;
case 3:a=a*c;tf.setText(Double.toString(a));break;
case 4:a=a/c;tf.setText(Double.toString(a));break;
case 5:a=a%c;tf.setText(Double.toString(a));break;
}
w=0;
u=1;
}
}
}
public static void main(String args[]){
(new Experiment6()).display();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -