java制作简易计算器
wxs.. 2020-10-28 06:51:59 UserFrm.java
import java.awt.*;
import java.awt.event.*;
public class UserFrm extends Frame implements ActionListener {
private MenuBar jmb = new MenuBar();
private MenuItem item = new MenuItem("退 出");
public static Font font = new Font("宋体", 1, 16); public UserFrm(String title) throws HeadlessException { super(title); //【代码1】//设置该Frame位置与大小,具体值为(100, 100, 250, 200) setVisible(true); Menu menu = new Menu("文 件"); menu.add(item); item.setFont(font); Panel panelNorth = new Panel(); //【代码2】//把panelNorth加入窗体的北区 add(new Caculator(), BorderLayout.CENTER); item.addActionListener(this); jmb.add(menu); jmb.setFont(font); setMenuBar(jmb); //【代码3】//用匿名类的方式设计完成窗体关闭的监听和实现关闭的方法 validate();
} public void actionPerformed(ActionEvent e) { Object o = e.getSource(); if (o == item) System.exit(1);
} public static void main(String[] args) { new UserFrm("用户界面");
}
}
class Caculator extends Panel implements ActionListener, KeyListener {
private TextField tf = new TextField("");
private float x = 0;
private float y = 0;
private int code = 0;
private boolean enable;
private boolean first;
private String str = ""; public Caculator() { setLayout(new BorderLayout()); enable = true; first = true; add(tf, BorderLayout.NORTH); Panel panel = new Panel(); //【代码4】//把panel设置为GridLayout布局 Button btn = null; //【代码5】//创建btn并把标题设为1;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 //【代码6】//创建btn并把标题设为2;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 //【代码7】//创建btn并把标题设为3;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 //【代码8】//创建btn并把标题设为+;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 //【代码9】//创建btn并把标题设为4;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 //【代码10】//创建btn并把标题设为5;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 //【代码11】//创建btn并把标题设为6;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 //【代码12】//创建btn并把标题设为-;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 //【代码13】//创建btn并把标题设为7;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 //【代码14】//创建btn并把标题设为8;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 ///【代码15】//创建btn并把标题设为9;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 //【代码16】//创建btn并把标题设为*;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 //【代码17】//创建btn并把标题设为0;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 //【代码18】//创建btn并把标题设为.;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 //【代码19】//创建btn并把标题设为/;把btn加入panel中;设置该按钮的字体格式为UserFrm.font;设置输入确认监听;设置键盘输入监听 btn = new Button("="); panel.add(btn); btn.setFont(UserFrm.font); btn.addActionListener(this); btn.addKeyListener(this); //【代码20】//把panel加入Caculator的中部区域中
} public void actionPerformed(ActionEvent e) { if (e.getActionCommand() == "+") { //【代码21】//把文本框里的数字转成浮点型,赋给x code = 0; this.tf.setText(""); } if (e.getActionCommand() == "-") { //【代码21】//把文本框里的数字转成浮点型,赋给x code = 1; this.tf.setText(""); } if (e.getActionCommand() == "*") { //【代码21】//把文本框里的数字转成浮点型,赋给x code = 2; this.tf.setText(""); } if (e.getActionCommand() == "/") { x = Float.parseFloat(tf.getText()); code = 3; this.tf.setText(""); } if (e.getActionCommand() != "+" && e.getActionCommand() != "-" && e.getActionCommand() != "*" && e.getActionCommand() != "/" && e.getActionCommand() != "=") { if (enable) { if (first) { tf.setText(e.getActionCommand()); first = false; } else { tf.setText(tf.getText() + e.getActionCommand()); } } else { tf.setText(e.getActionCommand()); enable = true; } } if (e.getActionCommand() == "=") { switch (code) { case 0: //【代码22】//完成两个数的加法运算 tf.setText(Float.toString(y)); enable = false; break; case 1: //【代码23】//完成两个数的减法运算 tf.setText(Float.toString(y)); enable = false; break; case 2: //【代码24】//完成两个数的乘法运算 tf.setText(Float.toString(y)); enable = false; break; case 3: //【代码25】//完成两个数的除法运算 tf.setText(Float.toString(y)); enable = false; break; } }
} public void keyPressed(KeyEvent e) { if (e.getKeyChar() == '+') { x = Float.parseFloat(tf.getText()); code = 0; this.tf.setText(""); } if (e.getKeyChar() == '-') { x = Float.parseFloat(tf.getText()); code = 1; this.tf.setText(""); } if (e.getKeyChar() == '*') { x = Float.parseFloat(tf.getText()); code = 2; this.tf.setText(""); } if (e.getKeyChar() == '/') { x = Float.parseFloat(tf.getText()); code = 3; this.tf.setText(""); } if (【代码26】) {//判断用键盘输入的数字是否为0-9以及.号,其中的一个。 if (enable) { //【代码27】//在文本框中输入一个数字并显示。当再次输入数字时,把原数据放大十倍再并上第二次输入的数据。 //提示:用first确定数字是否第一次输入数据;用字符串合并来放大十倍。 } else { str = Character.toString(e.getKeyChar()); tf.setText(str); enable = true; } } if (【代码28】) {//判断用键盘输入的地键是否是回车确认键。 switch (code) { case 0: y = x + Float.parseFloat(this.tf.getText());//完成两个数的加法运算 tf.setText(Float.toString(y)); enable = false; break; case 1: y = x - Float.parseFloat(this.tf.getText());//完成两个数的减法运算 tf.setText(Float.toString(y)); enable = false; break; case 2: y = x * Float.parseFloat(this.tf.getText());//完成两个数的乘法运算 tf.setText(Float.toString(y)); enable = false; break; case 3: y = x / Float.parseFloat(this.tf.getText());//完成两个数的除法运算 tf.setText(Float.toString(y)); enable = false; break; } }
} public void keyReleased(KeyEvent arg0) {
} public void keyTyped(KeyEvent arg0) {
}
}
大佬帮忙填一下代码,自己填的一直出错