import java.awt.Color;
import java.awt.Font;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.LineBorder;
public class Calculator extends JFrame{
private JTextField jf_1, jf_2;
private JButton jb;
private JPanel jp=new JPanel(null);
private String str[] = {"MC","MR","MS","M+","M-","←","CE","C","±","√","7","8","9",
"/","%","4","5","6","*","1/x","1","2","3","-","=","0",".","+"};
/**
* 设置总体布局
/
public Calculator(){
super("计算器");
//this.setLayout(null);
this.setSize(210, 330); //设置frame的宽和高
this.setResizable(false);//设置frame的大小无法改变
//JPanel jp=new JPanel(null);//等价于 JPanel jp=new JPanel(); jp.setLayout(null);可自行设计布局
//jp.setBounds(1000,100,20,24);//设置面板在frame的位置及自身大小
/*显示屏**/
jf_1 = new JTextField("");
jf_2 = new JTextField("0");
jf_1.setEnabled(false);//设置该组件不能再次被输入文本
jf_2.setEnabled(false);
jf_1.setBounds(0, 0, 205, 30);
jf_2.setBounds(0, 30, 205, 30);
jf_1.setHorizontalAlignment(JLabel.RIGHT);//设置文本在组件中的显示位置
jf_2.setHorizontalAlignment(JLabel.RIGHT);
/**按钮 35px*29px 28个***/
/**前24个**/
for(int i=0; i<24; i++)
{
jb = new JButton(str[i]);
jb.setMargin(new java.awt.Insets(0,0,0,0)); //命令按钮里的文本距离图标上左下右距离
jb.setBounds(i%5*(35+5), 60+i/5*(30+5)+5, 35, 30);//设置命令按钮距离面板左,上距离。图标的长宽。
jb.addMouseListener(new MyMouseListener());
jp.add(jb); //两命令按钮间的垂直间隔为5,水平间隔为7
}
jb = new JButton(str[24]); //添加"="
jb.setMargin(new java.awt.Insets(0, 0, 0, 0));
jb.setBounds((24%5)*(35+5), 60+24/5*(30+5)+5, 35, 30+30+5);
jb.addMouseListener(new MyMouseListener());
jp.add(jb);
jb = new JButton(str[25]); //添加"0"
jb.setMargin(new java.awt.Insets(0, 0, 0, 0));
jb.setBounds((25%5)*(35+5), 60+25/5*(30+5)+5, 35+35+5, 30);
jb.addMouseListener(new MyMouseListener());
jp.add(jb);
//
// jb = new JButton(str[26]); //添加"."
// jb.setMargin(new java.awt.Insets(0, 0, 0, 0));
// jb.setBounds((27%5)*(35+5), 60+27/5*(30+5)+5, 35, 30);
// jb.addMouseListener(new MyMouseListener());
// jp.add(jb);
//
// jb = new JButton(str[27]); //添加"+"
// jb.setMargin(new java.awt.Insets(0, 0, 0, 0));
// jb.setBounds((28%5)*(35+5), 60+28/5*(30+5)+5, 35, 30);
// jp.add(jb);
//
jp.add(jf_1);
jp.add(jf_2);
this.add(jp);
this.setVisible(true);
}
/**
* 内部类:事件处理
* @author
*
*/
class MyMouseListener extends MouseAdapter{
public void mouseClicked(MouseEvent e){
JButton jbb = (JButton)e.getSource();
if(jbb.getText() == "="){
jf_2.setText("jk");
JButton j ;
j = new JButton(str[26]); //添加"."
j.setMargin(new java.awt.Insets(0, 0, 0, 0));
j.setBounds((27%5)*(35+5), 60+27/5*(30+5)+5, 35, 30);
// j.addMouseListener(new MyMouseListener());
//Calculator.this.jp.add(j);
Calculator.this.add(jp.add(j));
Calculator.this.setVisible(true);
//点击“=”按钮后,“.”为什么不是添加在"0"的后面啊???
}
}
}
public static void main(String arg[]){
new Calculator();
}
}