求计算器的JAVA代码,要纯AWT,按钮的定义和功能多的实现麻烦注释一下,速度的import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Frame;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Panel;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.math.BigDecimal;
public class Calculator implements ActionListener {
private Frame f = new Frame("计算器");
// 菜单栏
private MenuBar menubar = new MenuBar();
private Menu menu1 = new Menu("查看");
private Menu menu2 = new Menu("编辑");
private Menu menu3 = new Menu("帮助");
private MenuItem item1 = new MenuItem("标准型");
private MenuItem item2 = new MenuItem("复制");
private MenuItem item3 = new MenuItem("粘贴");
private MenuItem item4 = new MenuItem("关于计算机");
// 显示器面板
private Panel panel1 = new Panel();
private TextField label = new TextField(21);
// 按钮面板
private Panel panel2 = new Panel();
private GridBagLayout gb = new GridBagLayout();
private GridBagConstraints gbc = new GridBagConstraints();
// 按钮内容
private String[] cal = {"MC", "MR", "MS", "M+", "M-", "←", "CE", "C", "±", "√", "7", "8", "9", "/", "%", "4",
"5", "6", "*", "1/x", "1", "2", "3", "-", "=", "0", ".", "+"};
private Button[] bs = new Button[28];
// 临时存储
private double tmp1 = 0;
private double tmp2 = 0;
// 判断临时存储器中是否有值
private boolean istmp1 = false, istmp2 = false;
//临时保存运算符
private String tmpoperator = "";
// 是否清空
private boolean isclear = false;
public void init() {
//设置Frame布局方式
f.setLayout(new BorderLayout());
// 初始化界面
label.setEditable(false);
label.setText("0");
panel1.add(label);
panel2.setLayout(gb);
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.fill = GridBagConstraints.BOTH;
gbc.insets = new Insets(2, 2, 2, 2);
gbc.gridx = 0;
gbc.gridy = 0;
for (int i = 0; ibs.length; i++) {
bs[i] = new Button(cal[i]);
int x = 1;
String actionCommand = bs[i].getActionCommand().trim();
if("0".equals(actionCommand)) {
gbc.gridwidth = 2;
x = 2;
} else if("=".equals(actionCommand)) {
gbc.gridheight = 2;
}
gb.setConstraints(bs[i], gbc);
panel2.add(bs[i]);
gbc.gridwidth = 1;
gbc.gridheight = 1;
gbc.gridx += x;
if((i+1)%5 == 0) {
gbc.gridx = 0;
gbc.gridy += 1;
}
//为按钮添加事件
bs[i].addActionListener(this);
}
menu1.add(item1);
menu2.add(item2);
menu2.add(item3);
menu3.add(item4);
menubar.add(menu1);
menubar.add(menu2);
menubar.add(menu3);
//修改开始
f.add(panel1, BorderLayout.NORTH);
f.add(panel2, BorderLayout.CENTER);
//修改结束
f.setMenuBar(menubar);
f.pack();
f.setResizable(false);
f.setLocation(400, 350);
f.setVisible(true);
//修改……关闭窗口时 , 停止程序
f.addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
}
/**
* 实现事件.
* @param e
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
*/
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
String numBtn = ",0,1,2,3,4,5,6,7,8,9,";
- java查询数组中是否包含某一个值 javamongodb数组查询
- redis实战电子书 redisjava书籍
- javaredis集群 javaredis列队
- Redis队列排队 redis队列java
- java mongodb aggregate mongodb的教程java
- redis实现秒杀功能java redis和mq实现秒杀
- redis队列实现秒杀java redis推时队列
- java redis面试 javaredis试题
- spring监听redis队列 java中redis监听
- java中redis javaredis异常
