import java.awt.*;
import java.util.List;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;
public class MyComputer extends JFrame{
public static int MCPT_WIDTH = 480;
public static int MCPT_HEIGHT = 520;
private String[] keys = {"1","2","3","4","5","6","7","8","9","0","清零","平方","+","-","*","/"};
public int key_value = 0;
TextField txf = new TextField();
int resultnum =0;
String text1 = "";
String text2 = "";
String operate = "";
String str = null;
public static void main(String[] args) {
new MyComputer().start();
}
public void start() {
setBounds(600, 200, MCPT_WIDTH, MCPT_HEIGHT);
setTitle("MyComputer");
setVisible(true);
setResizable(false);
Label lbl = new Label("计算结果:");
Panel p4 = new Panel(new BorderLayout(3,5));
Panel p1 = new Panel();
Panel p2 = new Panel();
Panel p3 = new Panel();
addWindowListener(new FrameMonitor());//添加监听器
add(p1,BorderLayout.CENTER);
add(p4,BorderLayout.NORTH);
txf.addActionListener(new TextFieldMonitor());
p4.add(lbl,BorderLayout.NORTH);//添加frame标签
p4.add(txf,BorderLayout.SOUTH);//添加textfield
p1.add(p2);
p1.add(p3);
p2.setLayout(new GridLayout(4,3,3,3));
p3.setLayout(new GridLayout(4,1,3,3));
//将JButton们 写入arraylist
List<JButton> buttonlist = new ArrayList<JButton>();//报错:import错误,将util.list写成awt.list
for(int i = 0;i<keys.length;i++) {//如果让i从1开始,会报错,why?
buttonlist.add(new JButton(keys[i]));//用循环遍历字符串数组keys为button命名
p2.add(buttonlist.get(i));
//注意角标!
if(i>11) {
p3.add(buttonlist.get(i));
}
buttonlist.get(i).addActionListener(new ButtonMonitor());
}
pack();
}
//添加window监听,即能关闭窗口
private class FrameMonitor extends WindowAdapter{
public void windowClosing(WindowEvent e) {
System.exit(0);
}
}
//添加button监听,实现运算功能
class ButtonMonitor implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
//此方法能显示出button上面的值,但是格式是String且不能转化成int
//强制将String转换int,用Integer.parseInt(s)方法
str = e.getActionCommand();
if(str=="清零") {
txf.setText("0");
}
//如果按下数字按钮
if("123456789".indexOf(str)>=0) {
txf.setText(str);
option();
}
else {
if(str =="+")
{
operate = "+";
option();
System.out.println("operate:"+operate);
}
if(str =="-")
{
operate = "-";
option();
System.out.println("operate:"+operate);
}
if(str =="*")
{ operate = "*";
option();
System.out.println("operate:"+operate);
}
if(str =="/")
{ operate = "/";
option();
System.out.println("operate:"+operate);
}
if(str =="平方")
{
resultnum = Integer.parseInt(txf.getText());
operate = "平方";
option();
txf.setText(resultnum+"");
System.out.println("operate:"+operate);
}
resultnum = Integer.parseInt(txf.getText());
System.out.println("resultnum1:"+resultnum);
}
}
//调用option方法才会接收button上的数字:利用时间差实现一个参数resultnum计算。
public void option(){
if(operate=="+")
{
resultnum += Integer.parseInt(txf.getText());
System.out.println("resultnum:"+resultnum);
}
if(operate=="-")
{
resultnum -= Integer.parseInt(txf.getText());
System.out.println("resultnum:"+resultnum);
}
if(operate=="*")
{
resultnum *= Integer.parseInt(txf.getText());
System.out.println("resultnum:"+resultnum);
}
if(operate=="/")
{
resultnum /= Integer.parseInt(txf.getText());
System.out.println("resultnum:"+resultnum);
}
if(operate=="平方")
{
resultnum *= resultnum;
//System.out.println("resultnum:"+resultnum);
}
}
}
class TextFieldMonitor implements ActionListener{
@Override
public void actionPerformed(ActionEvent e) {
txf.setText(""+resultnum);
}
}
}