使用JAVA制作一个能够实现加减乘除的计算器
老师让采用边界布局管理器和网格布局管理器制作一个简单的计算器。
要求显示的文本框再北区,按键在中区和南区。
代码展示:
运行结果
代码:
package Jishuanqi;
import javax.swing.;
import java.awt.;
import java.awt.event.*;
public class Jishuanqi extends JFrame implements ActionListener{
JTextField jtf;
JButton bt1,bt2,bt3,bt4,bt5,bt6,bt7,bt8,bt9,bt10,bt11,bt12,bt13,bt14,bt15,bt16,bt17;
String str = “”;
double x;
double y;
double result;
int n;
//创建一个空的主窗体
public Jishuanqi(String title) {
super(title);
this.setSize(300,340);
this.setResizable(false); //设置窗口大小不可改变;
}
public void JText() {
JPanel p1 = new JPanel(new BorderLayout());//新建面板使用边界布局
JPanel p = new JPanel();
jtf = new JTextField(24);
p.add(jtf);
p1.add(p,BorderLayout.NORTH);//将文本框添加到北区
JPanel p2 = new JPanel(new GridLayout(4,4,5,5));//新建面板使用网格布局
bt1 = new JButton("1");
bt2 = new JButton("2");
bt3 = new JButton("3");
bt4 = new JButton("+");
bt5 = new JButton("4");
bt6 = new JButton("5");
bt7 = new JButton("6");
bt8 = new JButton("-");
bt9 = new JButton("7");
bt10 = new JButton("8");
bt11 = new JButton("9");
bt12 = new JButton("0");
bt13 = new JButton("*");
bt14 = new JButton("/");
bt15 = new JButton("清除");
bt16 = new JButton(".");
bt1.addActionListener(this);
bt2.addActionListener(this);
bt3.addActionListener(this);
bt4.addActionListener(this);
bt5.addActionListener(this);
bt6.addActionListener(this);
bt7.addActionListener(this);
bt8.addActionListener(this);
bt9.addActionListener(this);
bt10.addActionListener(this);
bt11.addActionListener(this);
bt12.addActionListener(this);
bt13.addActionListener(this);
bt14.addActionListener(this);
bt15.addActionListener(this);
bt16.addActionListener(this);
p2.add(bt1);
p2.add(bt2);
p2.add(bt3);
p2.add(bt4);
p2.add(bt5);
p2.add(bt6);
p2.add(bt7);
p2.add(bt8);
p2.add(bt9);
p2.add(bt10);
p2.add(bt11);
p2.add(bt12);
p2.add(bt13);
p2.add(bt14);
p2.add(bt15);
p2.add(bt16);
p1.add(p2,BorderLayout.CENTER);//将网格布局的按钮添加到中区
bt17 = new JButton("=");
bt17.addActionListener(this);
p1.add(bt17,BorderLayout.SOUTH);
this.add(p1);
this.setVisible(true);
}
public static void main(String[] args) {
Jishuanqi v = new Jishuanqi("计算器");
v.JText();
}
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("1")) {
str = str+"1"; //连接字符串;
jtf.setText(str); //显示输入;
jtf.setHorizontalAlignment(JTextField.RIGHT); //设置右对齐;
}else if(e.getActionCommand().equals("2")) {
str = str+"2";
jtf.setText(str);
jtf.setHorizontalAlignment(JTextField.RIGHT);
}else if(e.getActionCommand().equals("3")) {
str = str+"3";
jtf.setText(str);
jtf.setHorizontalAlignment(JTextField.RIGHT);
}else if(e.getActionCommand().equals("4")) {
str = str+"4";
jtf.setText(str);
jtf.setHorizontalAlignment(JTextField.RIGHT);
}else if(e.getActionCommand().equals("5")) {
str = str+"5";
jtf.setText(str);
jtf.setHorizontalAlignment(JTextField.RIGHT);
}else if(e.getActionCommand().equals("6")) {
str = str+"6";
jtf.setText(str);
jtf.setHorizontalAlignment(JTextField.RIGHT);
}else if(e.getActionCommand().equals("7")) {
str = str+"7";
jtf.setText(str);
jtf.setHorizontalAlignment(JTextField.RIGHT);
}else if(e.getActionCommand().equals("8")) {
str = str+"8";
jtf.setText(str);
jtf.setHorizontalAlignment(JTextField.RIGHT);
}else if(e.getActionCommand().equals("9")) {
str = str+"9";
jtf.setText(str);
jtf.setHorizontalAlignment(JTextField.RIGHT);
}else if(e.getActionCommand().equals("0")) {
str = str+"0";
jtf.setText(str);
jtf.setHorizontalAlignment(JTextField.RIGHT);
}else if(e.getActionCommand().equals("清除")) {
str = "";
jtf.setText("");
jtf.setHorizontalAlignment(JTextField.RIGHT);
}else if(e.getActionCommand().equals("+")) {
x = Double.parseDouble(str); //将输入字符串转换成浮点数;
str = ""; //清除上一输入;
jtf.setText(""); //空白显示;
n = 1; //计算方法1;
}else if(e.getActionCommand().equals("-")) {
x = Double.parseDouble(str);
str = "";
jtf.setText("");
n = 2;
}else if(e.getActionCommand().equals("*")) {
x = Double.parseDouble(str);
str = "";
jtf.setText("");
n = 3;
}else if(e.getActionCommand().equals("/")) {
x = Double.parseDouble(str);
str = "";
jtf.setText("");
n = 4;
}else if(e.getActionCommand().equals("=")) {
y = Double.parseDouble(str); //将下一次输入的字符串转换成浮点型;
switch(n){
case 1:result = x + y; //加减乘除计算;
break;
case 2:result = x - y;
break;
case 3:result = x*y;
break;
case 4:result = x/y;
break;
}
str = Double.toString(result); //将结果转换成字符串;
jtf.setText(str); //显示结果
jtf.setHorizontalAlignment(JTextField.RIGHT);
}
}
}
抱歉!计算器的拼音是Jisuanqi,我敲成了Jishuanqi。不过没有太大影响的哈。
方法有点蠢,但容易看懂。2020一起加油,冲冲冲!